Skip to content

Commit ffbf0d6

Browse files
authored
Merge pull request #57 from Looooong/only-render-game-camera-with-vxgi-attached
Only render Game camera with VXGI attached
2 parents 78c22ff + 60d0cdc commit ffbf0d6

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

Runtime/SRP/VXGIRenderPipeline.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,19 @@ protected override void Render(ScriptableRenderContext renderContext, Camera[] c
5151
foreach (var camera in cameras) {
5252
BeginCameraRendering(renderContext, camera);
5353

54-
if (camera.TryGetComponent<VXGI>(out var vxgi) && vxgi.isActiveAndEnabled) {
55-
vxgi.Render(renderContext, _renderer);
54+
if (camera.cameraType == CameraType.Game) {
55+
if (camera.TryGetComponent<VXGI>(out var vxgi) && vxgi.isActiveAndEnabled) {
56+
vxgi.Render(renderContext, _renderer);
57+
} else {
58+
RenderFallback(renderContext, camera);
59+
}
5660
} else {
5761
#if UNITY_EDITOR
5862
if (camera.cameraType == CameraType.SceneView) {
5963
ScriptableRenderContext.EmitWorldGeometryForSceneView(camera);
6064
}
6165

62-
if (mainCamera != null && mainCamera.TryGetComponent<VXGI>(out vxgi) && vxgi.isActiveAndEnabled) {
66+
if (mainCamera != null && mainCamera.TryGetComponent<VXGI>(out var vxgi) && vxgi.isActiveAndEnabled) {
6367
vxgi.Render(renderContext, camera, _renderer);
6468
} else {
6569
RenderFallback(renderContext, camera);
@@ -80,24 +84,25 @@ protected override void Render(ScriptableRenderContext renderContext, Camera[] c
8084
void RenderFallback(ScriptableRenderContext renderContext, Camera camera) {
8185
TriggerCameraCallback(camera, "OnPreRender", Camera.onPreRender);
8286

83-
_command.ClearRenderTarget(true, true, Color.black);
84-
renderContext.ExecuteCommandBuffer(_command);
85-
_command.Clear();
87+
if (!camera.TryGetCullingParameters(out _cullingParameters)) return;
8688

8789
TriggerCameraCallback(camera, "OnPreCull", Camera.onPreCull);
8890

89-
if (!camera.TryGetCullingParameters(out _cullingParameters)) return;
90-
9191
var cullingResults = renderContext.Cull(ref _cullingParameters);
9292
var drawingSettings = new DrawingSettings { perObjectData = PerObjectData };
93-
drawingSettings.SetShaderPassName(0, ShaderTagIDs.Deferred);
93+
drawingSettings.SetShaderPassName(0, ShaderTagIDs.ForwardBase);
9494
drawingSettings.SetShaderPassName(1, ShaderTagIDs.PrepassBase);
9595
drawingSettings.SetShaderPassName(2, ShaderTagIDs.Always);
9696
drawingSettings.SetShaderPassName(3, ShaderTagIDs.Vertex);
9797
drawingSettings.SetShaderPassName(4, ShaderTagIDs.VertexLMRGBM);
9898
drawingSettings.SetShaderPassName(5, ShaderTagIDs.VertexLM);
9999

100100
renderContext.SetupCameraProperties(camera);
101+
102+
_command.ClearRenderTarget(true, true, camera.backgroundColor);
103+
renderContext.ExecuteCommandBuffer(_command);
104+
_command.Clear();
105+
101106
renderContext.DrawRenderers(cullingResults, ref drawingSettings, ref _filteringSettings);
102107
renderContext.DrawSkybox(camera);
103108

Shaders/Standard.shader

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
{
5353
Tags { "RenderPipeline"="VXGI" }
5454

55+
UsePass "Standard/FORWARD"
5556
UsePass "Standard/DEFERRED"
5657
UsePass "Hidden/VXGI/Voxelization/VOXELIZATION"
5758
}

0 commit comments

Comments
 (0)