public VXGIRenderer(VXGIRenderPipeline renderPipeline) { _command = new CommandBuffer { name = "VXGI.Renderer" }; _eventCommand = new CommandBuffer(); _filterSettings = new FilterRenderersSettings(true); _renderPipeline = renderPipeline; _gBufferBinding = new RenderTargetBinding( new RenderTargetIdentifier[] { ShaderIDs._CameraGBufferTexture0, ShaderIDs._CameraGBufferTexture1, ShaderIDs._CameraGBufferTexture2, ShaderIDs._CameraGBufferTexture3 }, new[] { RenderBufferLoadAction.DontCare, RenderBufferLoadAction.DontCare, RenderBufferLoadAction.DontCare, RenderBufferLoadAction.DontCare }, new[] { RenderBufferStoreAction.DontCare, RenderBufferStoreAction.DontCare, RenderBufferStoreAction.DontCare, RenderBufferStoreAction.DontCare }, ShaderIDs._CameraDepthTexture, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.DontCare ); _renderScale = new float[] { 1f, 1f, 1f, 1f }; _lightingPasses = new LightingShader[] { new LightingShader(LightingShader.Pass.Emission), new LightingShader(LightingShader.Pass.DirectDiffuseSpecular), new LightingShader(LightingShader.Pass.IndirectDiffuse), new LightingShader(LightingShader.Pass.IndirectSpecular) }; _postProcessRenderContext = new PostProcessRenderContext(); }
public void Render(ScriptableRenderContext renderContext, Camera camera, VXGIRenderer renderer) { VXGIRenderPipeline.TriggerCameraCallback(camera, "OnPreRender", Camera.onPreRender); _command.BeginSample(_command.name); renderContext.ExecuteCommandBuffer(_command); _command.Clear(); UpdateResolution(); float realtime = Time.realtimeSinceStartup; bool tracingThrottled = throttleTracing; if (tracingThrottled) { if (_previousTrace + 1f / tracingRate < realtime) { _previousTrace = realtime; PrePass(renderContext, renderer); } } else { PrePass(renderContext, renderer); } renderContext.SetupCameraProperties(camera); _command.ClearRenderTarget( (camera.clearFlags & CameraClearFlags.Depth) != 0, camera.clearFlags == CameraClearFlags.Color, camera.backgroundColor ); renderContext.ExecuteCommandBuffer(_command); _command.Clear(); SetupShader(renderContext); VXGIRenderPipeline.TriggerCameraCallback(camera, "OnPreCull", Camera.onPreCull); renderer.RenderDeferred(renderContext, camera, this); _command.EndSample(_command.name); renderContext.ExecuteCommandBuffer(_command); _command.Clear(); VXGIRenderPipeline.TriggerCameraCallback(camera, "OnPostRender", Camera.onPostRender); }
public void Render(ScriptableRenderContext renderContext, Camera camera, VXGIRenderer renderer) { VXGIRenderPipeline.TriggerCameraCallback(Camera, "OnPreRender", Camera.onPreRender); _command.BeginSample(_command.name); renderContext.ExecuteCommandBuffer(_command); _command.Clear(); UpdateResolution(); var time = Time.realtimeSinceStartup; if (!limitRefreshRate || (_previousRefresh + 1f / refreshRate < time)) { _previousRefresh = time; PrePass(renderContext, renderer); } renderContext.SetupCameraProperties(camera); _command.ClearRenderTarget( (camera.clearFlags & CameraClearFlags.Depth) != 0, camera.clearFlags == CameraClearFlags.Color, camera.backgroundColor ); renderContext.ExecuteCommandBuffer(_command); _command.Clear(); SetupShader(renderContext); VXGIRenderPipeline.TriggerCameraCallback(Camera, "OnPreCull", Camera.onPreCull); renderer.RenderDeferred(renderContext, camera, this); _command.EndSample(_command.name); renderContext.ExecuteCommandBuffer(_command); _command.Clear(); VXGIRenderPipeline.TriggerCameraCallback(Camera, "OnPostRender", Camera.onPostRender); }
public VXGIRenderer(VXGIRenderPipeline renderPipeline) { _command = new CommandBuffer { name = "VXGIRenderer" }; _filterSettings = new FilterRenderersSettings(true) { renderQueueRange = RenderQueueRange.all }; _renderPipeline = renderPipeline; _cameraDepthTextureID = Shader.PropertyToID("_CameraDepthTexture"); _cameraDepthNormalsTextureID = Shader.PropertyToID("_CameraDepthNormalsTexture"); _cameraGBufferTexture0ID = Shader.PropertyToID("_CameraGBufferTexture0"); _cameraGBufferTexture1ID = Shader.PropertyToID("_CameraGBufferTexture1"); _cameraGBufferTexture2ID = Shader.PropertyToID("_CameraGBufferTexture2"); _cameraGBufferTexture3ID = Shader.PropertyToID("_CameraGBufferTexture3"); _dummyID = Shader.PropertyToID("Dummy"); _frameBufferID = Shader.PropertyToID("FrameBuffer"); _gBufferBinding = new RenderTargetBinding( new RenderTargetIdentifier[] { _cameraGBufferTexture0ID, _cameraGBufferTexture1ID, _cameraGBufferTexture2ID, _cameraGBufferTexture3ID }, new[] { RenderBufferLoadAction.DontCare, RenderBufferLoadAction.DontCare, RenderBufferLoadAction.DontCare, RenderBufferLoadAction.DontCare }, new[] { RenderBufferStoreAction.DontCare, RenderBufferStoreAction.DontCare, RenderBufferStoreAction.DontCare, RenderBufferStoreAction.DontCare }, _cameraDepthTextureID, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.DontCare ); _renderScale = new float[] { 1f, 1f, 1f, 1f }; _lightingPasses = new LightingShader[] { new LightingShader(LightingShader.Pass.Emission), new LightingShader(LightingShader.Pass.DirectDiffuseSpecular), new LightingShader(LightingShader.Pass.IndirectDiffuse), new LightingShader(LightingShader.Pass.IndirectSpecular) }; _postProcessRenderContext = new PostProcessRenderContext(); }
public VXGIRenderer(VXGIRenderPipeline renderPipeline) { _command = new CommandBuffer { name = "VXGIRenderer" }; _commandDiffuse = new CommandBuffer { name = "VXGIRenderer.Diffuse" }; _commandReflection = new CommandBuffer { name = "VXGIRenderer.Reflection" }; _filterSettings = new FilterRenderersSettings(true) { renderQueueRange = RenderQueueRange.all }; _renderPipeline = renderPipeline; _propDepth = Shader.PropertyToID("Depth"); _propDiffuse = Shader.PropertyToID("Diffuse"); _propEmission = Shader.PropertyToID("Emission"); _propIrradiance = Shader.PropertyToID("Irradiance"); _propNormal = Shader.PropertyToID("Normal"); _propOther = Shader.PropertyToID("Other"); }