Skip to content

Commit 41d1f0f

Browse files
Add VT frame settings (#2286)
* Add frame setting * changelog * Grey setting out and make it always available. * Reverts tuff meant for antoher branch Co-authored-by: JulienIgnace-Unity <[email protected]>
1 parent 0a6ab77 commit 41d1f0f

File tree

5 files changed

+52
-30
lines changed

5 files changed

+52
-30
lines changed

com.unity.render-pipelines.high-definition/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ The version number for this package has increased due to a version update of a r
6565
- Adding missing marker for ray tracing profiling (RaytracingDeferredLighting)
6666
- Added the support of eye shader for ray tracing.
6767
- Exposed Refraction Model to the material UI when using a Lit ShaderGraph.
68+
- Added frame setting for Virtual Texturing.
6869

6970
### Fixed
7071
- Fixed several issues with physically-based DoF (TAA ghosting of the CoC buffer, smooth layer transitions, etc)

com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/FrameSettingsUI.Drawers.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,9 @@ static void Drawer_SectionRenderingSettings(SerializedFrameSettings serialized,
236236
});
237237

238238
area.AmmendInfo(FrameSettingsField.RayTracing, overrideable: () => hdrpSettings.supportRayTracing);
239+
#if !ENABLE_VIRTUALTEXTURES
240+
area.AmmendInfo(FrameSettingsField.VirtualTexturing, overrideable: () => false);
241+
#endif
239242
area.AmmendInfo(FrameSettingsField.MotionVectors, overrideable: () => hdrpSettings.supportMotionVectors);
240243
area.AmmendInfo(FrameSettingsField.ObjectMotionVectors, overrideable: () => hdrpSettings.supportMotionVectors);
241244
area.AmmendInfo(FrameSettingsField.TransparentsWriteMotionVector, overrideable: () => hdrpSettings.supportMotionVectors);

com.unity.render-pipelines.high-definition/Runtime/Material/VTBufferManager.cs

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -79,23 +79,29 @@ public void Cleanup()
7979

8080
public void BeginRender(HDCamera hdCamera)
8181
{
82-
int width = hdCamera.actualWidth;
83-
int height = hdCamera.actualHeight;
84-
bool msaa = hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA);
85-
GetResolveDimensions(ref width, ref height);
86-
if (msaa)
87-
m_ResolverMsaa.UpdateSize(width, height);
88-
else
89-
m_Resolver.UpdateSize(width, height);
82+
if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.VirtualTexturing))
83+
{
84+
int width = hdCamera.actualWidth;
85+
int height = hdCamera.actualHeight;
86+
bool msaa = hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA);
87+
GetResolveDimensions(ref width, ref height);
88+
if (msaa)
89+
m_ResolverMsaa.UpdateSize(width, height);
90+
else
91+
m_Resolver.UpdateSize(width, height);
92+
}
9093
}
9194

9295
public void Resolve(CommandBuffer cmd, RTHandle rt, HDCamera hdCamera)
9396
{
94-
var parameters = PrepareResolveVTParameters(hdCamera);
95-
var msaaEnabled = hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA);
96-
RTHandle input = msaaEnabled ? FeedbackBufferMsaa : (rt != null ? rt : FeedbackBuffer);
97+
if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.VirtualTexturing))
98+
{
99+
var parameters = PrepareResolveVTParameters(hdCamera);
100+
var msaaEnabled = hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA);
101+
RTHandle input = msaaEnabled ? FeedbackBufferMsaa : (rt != null ? rt : FeedbackBuffer);
97102

98-
ResolveVTDispatch(parameters, cmd, input, m_LowresResolver);
103+
ResolveVTDispatch(parameters, cmd, input, m_LowresResolver);
104+
}
99105
}
100106

101107
class ResolveVTData
@@ -107,21 +113,24 @@ class ResolveVTData
107113

108114
public void Resolve(RenderGraph renderGraph, HDCamera hdCamera, TextureHandle input)
109115
{
110-
using (var builder = renderGraph.AddRenderPass<ResolveVTData>("Resolve VT", out var passData))
116+
if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.VirtualTexturing))
111117
{
112-
// The output is never read outside the pass but is still useful for the VT system so we can't cull this pass.
113-
builder.AllowPassCulling(false);
114-
115-
passData.parameters = PrepareResolveVTParameters(hdCamera);
116-
passData.input = builder.ReadTexture(input);
117-
passData.lowres = builder.WriteTexture(renderGraph.ImportTexture(m_LowresResolver));
118-
119-
builder.SetRenderFunc(
120-
(ResolveVTData data, RenderGraphContext ctx) =>
118+
using (var builder = renderGraph.AddRenderPass<ResolveVTData>("Resolve VT", out var passData))
121119
{
122-
ResolveVTDispatch(data.parameters, ctx.cmd, data.input, data.lowres);
123-
VirtualTexturing.System.Update();
124-
});
120+
// The output is never read outside the pass but is still useful for the VT system so we can't cull this pass.
121+
builder.AllowPassCulling(false);
122+
123+
passData.parameters = PrepareResolveVTParameters(hdCamera);
124+
passData.input = builder.ReadTexture(input);
125+
passData.lowres = builder.WriteTexture(renderGraph.ImportTexture(m_LowresResolver));
126+
127+
builder.SetRenderFunc(
128+
(ResolveVTData data, RenderGraphContext ctx) =>
129+
{
130+
ResolveVTDispatch(data.parameters, ctx.cmd, data.input, data.lowres);
131+
VirtualTexturing.System.Update();
132+
});
133+
}
125134
}
126135
}
127136

com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2992,12 +2992,15 @@ void Callback(CommandBuffer c, HDCamera cam)
29922992
}
29932993

29942994
#if ENABLE_VIRTUALTEXTURES
2995-
m_VtBufferManager.Resolve(cmd, m_GbufferManager.GetVTFeedbackBuffer(), hdCamera);
2996-
VirtualTexturing.System.Update();
2997-
2998-
if(m_VTDebugBlit != null)
2995+
if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.VirtualTexturing))
29992996
{
3000-
PushFullScreenVTFeedbackDebugTexture(cmd, GetVTFeedbackBufferForForward(hdCamera), hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA));
2997+
m_VtBufferManager.Resolve(cmd, m_GbufferManager.GetVTFeedbackBuffer(), hdCamera);
2998+
VirtualTexturing.System.Update();
2999+
3000+
if (m_VTDebugBlit != null)
3001+
{
3002+
PushFullScreenVTFeedbackDebugTexture(cmd, GetVTFeedbackBufferForForward(hdCamera), hdCamera.frameSettings.IsEnabled(FrameSettingsField.MSAA));
3003+
}
30013004
}
30023005
#endif
30033006

com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Settings/FrameSettings.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@ public enum FrameSettingsField
132132
/// <summary>When enabled, HDRP renders custom passes contained in CustomPassVolume components.</summary>
133133
[FrameSettingsField(0, autoName: CustomPass, customOrderInGroup: 11, tooltip: "When enabled, HDRP renders custom passes contained in CustomPassVolume components.")]
134134
CustomPass = 6,
135+
/// <summary>When enabled, HDRP can use virtual texturing.</summary>
136+
[FrameSettingsField(0, autoName: VirtualTexturing, customOrderInGroup: 105, tooltip: "When enabled, HDRP can use virtual texturing.")]
137+
VirtualTexturing = 67,
135138

136139
/// <summary>When enabled, HDRP processes a motion vector pass for Cameras using these Frame Settings.</summary>
137140
[FrameSettingsField(0, autoName: MotionVectors, customOrderInGroup: 12, tooltip: "When enabled, HDRP processes a motion vector pass for Cameras using these Frame Settings (Depends on \"Motion Vectors\" in current HDRP Asset).")]
@@ -393,6 +396,7 @@ partial struct FrameSettings
393396
(uint)FrameSettingsField.TransparentPrepass,
394397
(uint)FrameSettingsField.TransparentPostpass,
395398
(uint)FrameSettingsField.CustomPass,
399+
(uint)FrameSettingsField.VirtualTexturing,
396400
(uint)FrameSettingsField.MotionVectors, // Enable/disable whole motion vectors pass (Camera + Object).
397401
(uint)FrameSettingsField.ObjectMotionVectors,
398402
(uint)FrameSettingsField.Decals,
@@ -468,6 +472,7 @@ partial struct FrameSettings
468472
(uint)FrameSettingsField.TransparentPrepass,
469473
(uint)FrameSettingsField.TransparentPostpass,
470474
(uint)FrameSettingsField.CustomPass,
475+
(uint)FrameSettingsField.VirtualTexturing,
471476
(uint)FrameSettingsField.MotionVectors, // Enable/disable whole motion vectors pass (Camera + Object).
472477
(uint)FrameSettingsField.ObjectMotionVectors,
473478
(uint)FrameSettingsField.Decals,
@@ -524,6 +529,7 @@ partial struct FrameSettings
524529
(uint)FrameSettingsField.TransparentPrepass,
525530
(uint)FrameSettingsField.TransparentPostpass,
526531
(uint)FrameSettingsField.CustomPass,
532+
(uint)FrameSettingsField.VirtualTexturing,
527533
//(uint)FrameSettingsField.MotionVectors, // Enable/disable whole motion vectors pass (Camera + Object).
528534
//(uint)FrameSettingsField.ObjectMotionVectors,
529535
(uint)FrameSettingsField.Decals,

0 commit comments

Comments
 (0)