Exemplo n.º 1
0
        private void BakeMap(int3 index)
        {
            float3 left     = transform.position - transform.lossyScale * 0.5f;
            float3 right    = transform.position + transform.lossyScale * 0.5f;
            float3 position = lerp(left, right, ((float3)index + 0.5f) / probeCount);

            SceneController.DrawGIBuffer(rt, float4(position, considerRange), resources.shaders.gpuFrustumCulling, cbuffer);
        }
        private void BakeMap(int3 index)
        {
            RenderTexture depthBuffer = RenderTexture.GetTemporary(RESOLUTION, RESOLUTION, 32, RenderTextureFormat.Depth, RenderTextureReadWrite.Linear);
            float3        left        = transform.position - transform.lossyScale * 0.5f;
            float3        right       = transform.position + transform.lossyScale * 0.5f;
            float3        position    = lerp(left, right, ((float3)index + 0.5f) / probeCount);

            SceneController.DrawGIBuffer(renderBuffers, depthBuffer.depthBuffer, float4(position, considerRange), resources.gpuFrustumCulling);
            for (int i = 0; i < 6; ++i)
            {
                decodeShader.SetBuffer(0, "_ResultBuffer", resultbuffer);
                decodeShader.SetTexture(0, "_GBuffer0", prepareRenderTexture[i][0]);
                decodeShader.SetTexture(0, "_GBuffer1", prepareRenderTexture[i][1]);
                decodeShader.SetInt(ShaderIDs._OffsetIndex, i * RESOLUTION * RESOLUTION);
                decodeShader.Dispatch(0, RESOLUTION / 32, RESOLUTION / 32, 1);
            }
            RenderTexture.ReleaseTemporary(depthBuffer);
            resultbuffer.GetData(colorResults);
        }