public override void Rebuild() { ClearComputeBuffers(); s_CameraColorBuffer = Shader.PropertyToID("_CameraColorTexture"); s_CameraDepthBuffer = Shader.PropertyToID("_CameraDepthTexture"); s_punctualLightList = new ComputeBuffer(MaxLights, System.Runtime.InteropServices.Marshal.SizeOf(typeof(PunctualLightData))); s_envLightList = new ComputeBuffer(MaxLights, System.Runtime.InteropServices.Marshal.SizeOf(typeof(EnvLightData))); m_DeferredMaterial = CreateEngineMaterial("Hidden/Unity/LightingDeferred"); m_FinalPassMaterial = CreateEngineMaterial("Hidden/Unity/FinalPass"); // Debug m_DebugViewMaterialGBuffer = CreateEngineMaterial("Hidden/Unity/DebugViewMaterialGBuffer"); // m_ShadowPass = new ShadowRenderPass (m_ShadowSettings); m_cubeReflTexArray = new TextureCacheCubemap(); m_cubeReflTexArray.AllocTextureArray(32, (int)m_TextureSettings.reflectionCubemapSize, TextureFormat.BC6H, true); // Init Lit material buffer - GBuffer and init m_LitRenderLoop = new Lit.RenderLoop(); // Our object can be garbacge collected, so need to be allocate here m_gbufferManager.gbufferCount = m_LitRenderLoop.GetGBufferCount(); for (int gbufferIndex = 0; gbufferIndex < m_gbufferManager.gbufferCount; ++gbufferIndex) { m_gbufferManager.SetBufferDescription(gbufferIndex, "_CameraGBufferTexture" + gbufferIndex, m_LitRenderLoop.RTFormat[gbufferIndex], m_LitRenderLoop.RTReadWrite[gbufferIndex]); } m_LitRenderLoop.Rebuild(); }