Foundation
Loading...
Searching...
No Matches
Renderer.hpp
Go to the documentation of this file.
1#pragma once
2#include <Math/Math.hpp>
4#include "GPUScene.hpp"
5#include "Shaders/Flags.h"
6using namespace Foundation;
7using namespace Foundation::Math;
8using namespace Foundation::RenderCore;
9#pragma pack(push, 4)
11{
12 uint32_t frameNumber;
15 float lodThreshold{1e-3f};
16 float zNear;
22 uint32_t cameraHistoryFrame{UINT32_MAX};
23 float4 projPlanes; // ij:left, kl:top
24 float aperture{0.0f}; // Aperture radius in world units
25 float focalDistance{1e1};
26 uint32_t apertureBlades{0u};
27 float apertureRotation{0.0f};
28 float apertureRatio{1.0f};
29 uint32_t cameraProjection{0u};
31 // -- Framebuffers
32 // Note: ALWAYS updated by Renderers themselves (PT/RASTER)
33 float fbWidth;
34 float fbHeight;
35 uint32_t hizLevels;
36 uint32_t hizWidth;
37 uint32_t hizHeight;
38 // -- Lighting
39 float camEV{0.0f};
42 uint32_t ggxLutEIndex{UINT32_MAX};
43 uint32_t ggxLutEavgIndex{UINT32_MAX};
44 uint32_t ggxLutEIORIndex{UINT32_MAX};
45 uint32_t ggxLutEIORavgIndex{UINT32_MAX};
46 uint32_t ggxLutEIORInvIndex{UINT32_MAX};
47 uint32_t ggxLutEIORInvavgIndex{UINT32_MAX};
48 uint32_t sheenLtcIndex{UINT32_MAX};
49 uint32_t envMapTextureIndex{UINT32_MAX};
50 uint32_t envMapMarginalCDFIndex{UINT32_MAX};
51 uint32_t envMapConditionalCDFIndex{UINT32_MAX};
53 uint32_t hasEnvMap{0u};
55 uint32_t matcapTextureIndex{UINT32_MAX};
56 // Scene lights
63 uint32_t lightBVHValid{0u};
65 uint32_t energyCompensation{1u};
66 // -- Temporal accumulation
67 uint32_t accumulatedFrames{0u};
68 // -- Path Tracing
69 uint32_t ptMaxBounces{4u};
70 float ptFireflyClamp{1.0f}; // 10^x
71 uint32_t ptSamplesPerPixel{1u}; // Always >= 1.
72 uint32_t ptPrimaryLightVisibility{0u}; // Analytic lights + sun disks on bounce 0
74 uint32_t sharcEntries{0u};
75 float sharcSceneScale{50.0f};
76 float sharcRadianceScale{1000.0f};
78 uint32_t sharcStaleFrames{60u};
80 uint32_t sharcEnabled{1u};
82 // -- Debug
83 uint32_t dbgShowOutline{0u};
84 uint32_t dbgViewFlags{0u};
85 uint32_t dbgMaterialFlags{0u};
86 uint32_t adaptiveMinSamples{32u};
87 float adaptiveThreshold{0.01f}; // 0 = disabled
88 float rasterRTShadowBias{0.01f};
89};
90
92{
93 float camEV{0.0f};
94 uint32_t viewLutIndex{UINT32_MAX};
95 uint32_t dbgShowOutline{0u};
96 uint32_t accumulatedFrames{0u};
97 float fbWidth{1.0f};
98 float fbHeight{1.0f};
99 uint32_t outlineInstanceId{~0u};
100 float renderWidth{1.0f}; // Internal render target width
101 float renderHeight{1.0f}; // Internal render target height
102 uint32_t dbgViewFlags{0u};
103};
104
105#pragma pack(pop)
106
107inline void UpdateRendererCameraUBO(RendererUBO& ubo, uint32_t frameNumber, float4x4 const& view,
108 float4x4 const& proj, float2 jitterNDC = {})
109{
110 float4x4 clipTranslation{1.0f};
111 clipTranslation[3][0] = jitterNDC.x;
112 clipTranslation[3][1] = jitterNDC.y;
113 float4x4 const jitteredProj = clipTranslation * proj;
114 if (ubo.cameraHistoryFrame != frameNumber)
115 {
117 ubo.previousViewProj =
118 ubo.cameraHistoryFrame == UINT32_MAX ? jitteredProj * view : ubo.proj * ubo.view;
119 ubo.cameraHistoryFrame = frameNumber;
120 }
121 ubo.frameNumber = frameNumber;
122 ubo.view = view;
123 ubo.proj = jitteredProj;
124 ubo.inverseView = inverse(view);
125 ubo.inverseViewProj = inverse(jitteredProj * view);
126 ubo.cameraTanHalfFov = float2{1.0f / proj[0][0], 1.0f / proj[1][1]};
127}
128
129
131{
132 ViewFlags viewFlags{ViewFlagsBits::EnableRasterRTShadows};
133 MaterialFlags materialFlags{0u};
134 CullFlags cullFlags{CullFlagsBits::Frustum | CullFlagsBits::Occlusion | CullFlagsBits::Backface};
136 PTSampler ptSampler{PTSampler::Sobol};
137 LightSampler lightSamplerMode{LightSampler::BVH};
138 bool const* ptRenderPaused{nullptr};
140 bool forceTextureLOD0{false};
144 bool ptSharc{true};
145 uint32_t ptSharcEntries{1u << 22u};
146 float ptSharcSceneScale{50.0f};
148 uint32_t ptSharcStaleFrames{60u};
152 float textureAnisoLevel{16.0f};
154 bool isRendering{false};
155};
156
158{
159 using SamplerDesc = RHIDeviceSampler::SamplerDesc;
160 using MipmapMode = SamplerDesc::Mipmap::MipmapMode;
161 return {
162 .anisotropy = {.enable = cfg.textureAnisoEnable, .maxLevel = cfg.textureAnisoLevel},
163 .mipmap = {.mipmapMode = cfg.textureTrilinear ? MipmapMode::Linear : MipmapMode::Nearest},
164 .lod = {.max = 16.0f},
165 };
166}
167
192
194
195void BuildGPUSceneHostUpdatePass(Renderer* renderer, RendererResources& resources);
197;
199
200template <typename FSetup, typename FRecord>
202 FSetup&& setup, FRecord&& record)
203{
204 CHECK(renderer);
205 CHECK(resources.scene);
206 PassHandle preTransition = renderer->CreatePass(
207 Format("{} Pre-Transition", name), RHIDeviceQueueType::Graphics, 100u, FSetupDefault{},
208 [resources](PassHandle, Renderer*, RHICommandList* cmd)
210 PassHandle update = renderer->CreatePass(
211 name, RHIDeviceQueueType::Compute, 100u,
212 [resources, preTransition, setup = std::forward<FSetup>(setup)](PassHandle self, Renderer* r) mutable
213 {
214 r->BindPass(self, preTransition);
215 r->BindDescriptorSetWrite(self, "gStorageTextures2D",
218 setup(self, r);
219 },
220 [resources, record = std::forward<FRecord>(record)](PassHandle self, Renderer* r, RHICommandList* cmd) mutable
221 {
222 r->CmdBindDescriptorSet(self, cmd, "gStorageTextures2D", resources.textures2D->GetStorageDescriptorSet());
223 record(self, r, cmd);
224 });
225 return renderer->CreatePass(
226 Format("{} Post-Transition", name), RHIDeviceQueueType::Graphics, 100u,
227 [resources, update](PassHandle self, Renderer* r)
228 {
229 r->BindPass(self, update);
230 r->BindDescriptorSetWrite(self, resources.textures2D->GetStorageDescriptorSetLayout(),
232 },
233 [resources](PassHandle, Renderer*, RHICommandList* cmd)
235}
236
237template <typename FSetup, typename FRecord>
239 FSetup&& setup, FRecord&& record)
240{
241 CHECK(renderer);
242 CHECK(resources.scene);
243 PassHandle preTransition = renderer->CreatePass(
244 Format("{} Pre-Transition", name), RHIDeviceQueueType::Graphics, 100u, FSetupDefault{},
245 [resources](PassHandle, Renderer*, RHICommandList* cmd)
247 PassHandle update = renderer->CreatePass(
248 name, RHIDeviceQueueType::Compute, 100u,
249 [resources, preTransition, setup = std::forward<FSetup>(setup)](PassHandle self, Renderer* r) mutable
250 {
251 r->BindPass(self, preTransition);
252 r->BindDescriptorSetWrite(self, "gStorageTextures3D",
255 setup(self, r);
256 },
257 [resources, record = std::forward<FRecord>(record)](PassHandle self, Renderer* r, RHICommandList* cmd) mutable
258 {
259 r->CmdBindDescriptorSet(self, cmd, "gStorageTextures3D", resources.textures3D->GetStorageDescriptorSet());
260 record(self, r, cmd);
261 });
262 return renderer->CreatePass(
263 Format("{} Post-Transition", name), RHIDeviceQueueType::Graphics, 100u,
264 [resources, update](PassHandle self, Renderer* r)
265 {
266 r->BindPass(self, update);
267 r->BindDescriptorSetWrite(self, resources.textures3D->GetStorageDescriptorSetLayout(),
269 },
270 [resources](PassHandle, Renderer*, RHICommandList* cmd)
272}
273
274template <typename FSetup, typename FRecord>
276 TextureHandle target, FSetup&& setup, FRecord&& record)
277{
278 CHECK(renderer);
279 CHECK(resources.scene);
280 CHECK(resources.textures2D);
281 RHITexture* texture =
282 resources.scene->ResolveDynamicTextureGPU(target, RHITextureUsageBits::RenderTarget);
283 CHECK(texture);
284 ResourceHandle const targetResource = renderer->CreateResource(Format("{} Target", name), texture);
285 RHITextureViewDesc const targetView{
286 .format = texture->mDesc.format,
287 .dimension = texture->mDesc.dimension,
288 .range = RHITextureSubresourceRange::Create(RHITextureAspectFlagBits::Color, 0, texture->mDesc.mipLevels, 0,
289 texture->mDesc.arrayLayers)};
290 PassHandle const update = renderer->CreatePass(
291 name, RHIDeviceQueueType::Graphics, 100u,
292 [resources, targetResource, targetView, setup = std::forward<FSetup>(setup)](PassHandle self,
293 Renderer* r) mutable
294 {
296 r->BindTextureRTV(self, targetResource, targetView);
297 setup(self, r);
298 },
299 [record = std::forward<FRecord>(record)](PassHandle self, Renderer* r, RHICommandList* cmd) mutable
300 { record(self, r, cmd); });
301 return renderer->CreatePass(
302 Format("{} Post-Transition", name), RHIDeviceQueueType::Graphics, 100u,
303 [resources, targetResource, texture, update](PassHandle self, Renderer* r)
304 {
305 r->BindPass(self, update);
307 self, targetResource,
308 RHIPipelineStageBits::AllGraphics | RHIPipelineStageBits::ComputeShader |
309 RHIPipelineStageBits::RayTracingShader,
310 RHITextureSubresourceRange::Create(RHITextureAspectFlagBits::Color, 0, texture->mDesc.mipLevels, 0,
311 texture->mDesc.arrayLayers));
313 r->MakePassUncullable(self);
314 },
315 [resources, target](PassHandle, Renderer*, RHICommandList*)
317}
318
#define CHECK(expr)
Definition Logging.hpp:92
void BuildGPUSceneHostUpdatePass(Renderer *renderer, RendererResources &resources)
Definition Renderer.cpp:40
PassHandle BuildGPUSceneTextures3DUpdatePass(Renderer *renderer, StringView name, RendererResources const &resources, FSetup &&setup, FRecord &&record)
Definition Renderer.hpp:238
PassHandle BuildGPUSceneRenderToTexturePass(Renderer *renderer, StringView name, RendererResources const &resources, TextureHandle target, FSetup &&setup, FRecord &&record)
Definition Renderer.hpp:275
void UpdateRendererCameraUBO(RendererUBO &ubo, uint32_t frameNumber, float4x4 const &view, float4x4 const &proj, float2 jitterNDC={})
Definition Renderer.hpp:107
PassHandle BuildGPUSceneTextures2DUpdatePass(Renderer *renderer, StringView name, RendererResources const &resources, FSetup &&setup, FRecord &&record)
Definition Renderer.hpp:201
void BuildGPUSceneAccelerationStructureUpdatePass(Renderer *renderer, RendererResources &resources)
Definition Renderer.cpp:67
RHIDeviceSampler::SamplerDesc MakeTextureSamplerDesc(RendererConfig const &cfg)
Definition Renderer.hpp:157
RendererResources CreateGPUSceneRendererResources(Renderer *renderer, GPUScene *scene)
Definition Renderer.cpp:3
void BuildGPUSceneLightBVHRefitPasses(Renderer *renderer, RendererResources &resources, ResourceHandle ubo)
Definition Renderer.cpp:88
Definition Resource.hpp:57
Definition Command.hpp:42
Definition Resource.hpp:216
const RHITextureDesc mDesc
Definition Resource.hpp:221
Definition Bindless.hpp:10
RHIDeviceDescriptorSet * GetStorageDescriptorSet() const
Definition Bindless.hpp:93
RHIDeviceDescriptorSetLayout * GetDescriptorSetLayout() const
Definition Bindless.hpp:90
RHIDeviceDescriptorSetLayout * GetStorageDescriptorSetLayout() const
Definition Bindless.hpp:92
Renderer implementing a Frame Graph system with automatic resource tracking and synchronization.
Definition Renderer.hpp:411
PassHandle CreatePass(StringView name, RHIDeviceQueueType queue, size_t priority, FSetup &&setup, FRecord &&record)
Create a render pass from a Setup(Renderer*, PassHandle) and Record(Renderer*, PassHandle,...
Definition Renderer.hpp:735
void BindTextureRTV(PassHandle pass, ResourceHandle texture, RHITextureViewDesc const &desc, RHIPipelineState::PipelineStateDesc::Attachment::Blending const &blending={}) const
Binds a texture as a Render Target View (color attachment) for a graphics pass.
Definition Renderer.cpp:460
void BindTextureShaderRead(PassHandle pass, ResourceHandle texture, RHIPipelineStage stage, RHITextureSubresourceRange const &range) const
Declares a shader read dependency for a texture without creating an internal binding.
Definition Renderer.cpp:450
void BindDescriptorSetWrite(PassHandle pass, StringView bind_point, RHIDeviceDescriptorSetLayout *layout, RHIDeviceDescriptorSetLayout *reading_layout=nullptr)
Binds an externally managed descriptor set that this pass writes.
Definition Renderer.cpp:382
void MakePassUncullable(PassHandle pass) const
Marks a pass as "uncullable", meaning it will always be executed even if it has no dependencies.
Definition Renderer.cpp:141
void BindPass(PassHandle pass, PassHandle other)
Declares an inter-pass dependency, where the other pass should execute-before the current pass.
Definition Renderer.cpp:205
ResourceHandle CreateResource(StringView name, T const &desc)
Create a new resource to be used in the render graph.
Definition Renderer.hpp:760
Definition GPUScene.hpp:196
void EndDynamicTextureGPU(RHICommandList *cmd, bool is3D, DynamicTextureGPUAccess access)
Definition GPUScene.cpp:3513
void BeginDynamicTextureGPU(RHICommandList *cmd, bool is3D, DynamicTextureGPUAccess access)
Definition GPUScene.cpp:3509
void CompleteDynamicTextureGPU(TextureHandle handle, DynamicTextureGPUAccess access)
Definition GPUScene.cpp:3521
RHITexture * ResolveDynamicTextureGPU(TextureHandle handle, RHITextureUsage requiredUsage) const
Definition GPUScene.cpp:3517
constexpr String Format(fmt::format_string< Args... > format, Args &&... args)
String wrapper for Format().
Definition Container.hpp:126
std::basic_string_view< char > StringView
Alias for std::basic_string_view<char>
Definition Container.hpp:56
Definition Decompose.hpp:4
vec2 float2
Definition Math.hpp:27
vec3 float3
Definition Math.hpp:26
vec4 float4
Definition Math.hpp:25
mat4 float4x4
Definition Math.hpp:28
static constexpr Handle kInvalidHandle
Definition Details.hpp:10
RHIResourceFormat
Definition Common.hpp:34
glm::vec< 2, uint32_t > RHIExtent2D
Definition Common.hpp:10
Core functionalities for rendering, including the Frame Graph implementation.
Definition Bindless.cpp:2
Handle ResourceHandle
Definition Renderer.hpp:22
Handle PassHandle
Definition Renderer.hpp:21
Definition Allocator.hpp:6
struct Foundation::RHI::RHIDeviceSampler::SamplerDesc::Anisotropy anisotropy
RHIResourceFormat format
Definition Resource.hpp:147
RHITextureDimension dimension
Definition Resource.hpp:144
uint32_t mipLevels
Definition Resource.hpp:149
uint32_t arrayLayers
Definition Resource.hpp:150
static RHITextureSubresourceRange Create(RHITextureAspectFlag aspect=RHITextureAspectFlagBits::Color, uint32_t base_mip_level=0, uint32_t mip_count=1, uint32_t base_array_layer=0, uint32_t layer_count=1)
Helper function to create a Subresource Range with default parameters.
Definition Resource.hpp:191
Definition Resource.hpp:210
RHIResourceFormat format
Definition Resource.hpp:211
Default "no-op" functor for Setup()
Definition Renderer.hpp:275
Definition GPUScene.hpp:40
Definition Renderer.hpp:92
uint32_t accumulatedFrames
Definition Renderer.hpp:96
float fbWidth
Definition Renderer.hpp:97
uint32_t dbgShowOutline
Definition Renderer.hpp:95
uint32_t outlineInstanceId
Definition Renderer.hpp:99
float renderHeight
Definition Renderer.hpp:101
float renderWidth
Definition Renderer.hpp:100
uint32_t viewLutIndex
Definition Renderer.hpp:94
float fbHeight
Definition Renderer.hpp:98
uint32_t dbgViewFlags
Definition Renderer.hpp:102
float camEV
Definition Renderer.hpp:93
Definition Renderer.hpp:131
LightSampler lightSamplerMode
Definition Renderer.hpp:137
uint32_t ptSharcUpdateDownscale
Definition Renderer.hpp:150
bool energyCompensation
Definition Renderer.hpp:141
bool ptLightBVHIncludeEmissiveClusters
Definition Renderer.hpp:143
MaterialFlags materialFlags
Definition Renderer.hpp:133
PTSampler ptSampler
Definition Renderer.hpp:136
RHIExtent2D renderExtent
Definition Renderer.hpp:135
ViewFlags viewFlags
Definition Renderer.hpp:132
bool isRendering
Definition Renderer.hpp:154
float ptSharcRoughnessThreshold
Definition Renderer.hpp:149
uint32_t ptSharcAccumulationFrames
Definition Renderer.hpp:147
uint32_t ptSharcEntries
Definition Renderer.hpp:145
bool textureTrilinear
Definition Renderer.hpp:153
float ptSharcSceneScale
Definition Renderer.hpp:146
bool ptPrimaryLightVisibility
Definition Renderer.hpp:142
uint32_t ptSharcStaleFrames
Definition Renderer.hpp:148
float textureAnisoLevel
Definition Renderer.hpp:152
bool forceTextureLOD0
Definition Renderer.hpp:140
bool textureAnisoEnable
Definition Renderer.hpp:151
bool const * ptRenderPaused
Definition Renderer.hpp:138
bool ptShaderExecutionReordering
Definition Renderer.hpp:139
CullFlags cullFlags
Definition Renderer.hpp:134
bool ptSharc
Definition Renderer.hpp:144
Definition Renderer.hpp:320
TemporalResourceHandle depth
Definition Renderer.hpp:326
RHIExtent2D extent
Definition Renderer.hpp:321
ResourceHandle instanceID
Definition Renderer.hpp:327
ResourceHandle specular
Definition Renderer.hpp:325
ResourceHandle diffuse
Definition Renderer.hpp:324
ResourceHandle debugOutput
Definition Renderer.hpp:328
RHIResourceFormat aovFormat
Definition Renderer.hpp:322
Definition Renderer.hpp:169
RHIBuffer * primitiveBufferRHI
Definition Renderer.hpp:186
bool hasCurveGeometry
Definition Renderer.hpp:190
bool hasDynamicGeometry
Definition Renderer.hpp:188
ResourceHandle materialBuffer
Definition Renderer.hpp:175
ResourceHandle sobolMatricesBuffer
Definition Renderer.hpp:182
ResourceHandle primitiveBuffer
Definition Renderer.hpp:171
ResourceHandle lightBVHNodeIndexBuffer
Definition Renderer.hpp:181
ResourceHandle lightBVHNodeBuffer
Definition Renderer.hpp:178
bool hasDynamicTextures
Definition Renderer.hpp:189
RHIBuffer * dynamicPrimitiveBufferRHI
Definition Renderer.hpp:187
ResourceHandle dynamicStagingBuffer
Definition Renderer.hpp:173
ResourceHandle emissiveClusterBuffer
Definition Renderer.hpp:177
ResourceHandle lightBVHBitmaskBuffer
Definition Renderer.hpp:180
ResourceHandle dynamicPrimitiveBuffer
Definition Renderer.hpp:172
GPUScene * scene
Definition Renderer.hpp:170
ResourceHandle tlas
Definition Renderer.hpp:183
ResourceHandle lightBuffer
Definition Renderer.hpp:176
ResourceHandle instanceBuffer
Definition Renderer.hpp:174
ResourceHandle lightBVHLightIndexBuffer
Definition Renderer.hpp:179
BindlessPool * textures2D
Definition Renderer.hpp:184
BindlessPool * textures3D
Definition Renderer.hpp:185
Definition Renderer.hpp:11
float zNear
Definition Renderer.hpp:16
uint32_t ggxLutEIORavgIndex
Definition Renderer.hpp:45
GSOffsetCount emissiveClusters
Definition Renderer.hpp:58
float aperture
Definition Renderer.hpp:24
float focalDistance
Definition Renderer.hpp:25
uint32_t cameraProjection
Definition Renderer.hpp:29
uint32_t envMapPrefilteredMips
Definition Renderer.hpp:52
uint32_t cameraHistoryFrame
Definition Renderer.hpp:22
uint32_t dbgMaterialFlags
Definition Renderer.hpp:85
uint32_t sharcAccumulationFrames
Definition Renderer.hpp:77
float4 projPlanes
Definition Renderer.hpp:23
uint32_t matcapTextureIndex
Definition Renderer.hpp:55
uint32_t hizLevels
Definition Renderer.hpp:35
uint32_t firstLightBVHBitmask
Definition Renderer.hpp:61
uint32_t ptPrimaryLightVisibility
Definition Renderer.hpp:72
float3 envSHCoeffs[9]
Definition Renderer.hpp:54
uint32_t hizWidth
Definition Renderer.hpp:36
uint32_t envMapTextureIndex
Definition Renderer.hpp:49
float fbHeight
Definition Renderer.hpp:34
GSOffsetCount lightBVHGlobalIndices
Definition Renderer.hpp:62
uint32_t sharcEnabled
Definition Renderer.hpp:80
uint32_t energyCompensation
Definition Renderer.hpp:65
uint32_t sharcEntries
Definition Renderer.hpp:74
float4x4 view
Definition Renderer.hpp:17
uint32_t ggxLutEIORInvIndex
Definition Renderer.hpp:46
float ptFireflyClamp
Definition Renderer.hpp:70
float adaptiveThreshold
Definition Renderer.hpp:87
uint32_t accumulatedFrames
Definition Renderer.hpp:67
float camEV
Definition Renderer.hpp:39
uint32_t sheenLtcIndex
Definition Renderer.hpp:48
GSOffsetCount lightBVHDistantNodes
Definition Renderer.hpp:64
GSOffsetCount instances
Definition Renderer.hpp:13
GSOffsetCount lightBVHLightIndices
Definition Renderer.hpp:60
float4x4 proj
Definition Renderer.hpp:18
float4x4 inverseViewProj
Definition Renderer.hpp:20
uint32_t hizHeight
Definition Renderer.hpp:37
uint32_t sharcStaleFrames
Definition Renderer.hpp:78
uint32_t dbgViewFlags
Definition Renderer.hpp:84
uint32_t sharcUpdateDownscale
Definition Renderer.hpp:81
uint32_t frameNumber
Definition Renderer.hpp:12
float sharcRoughnessThreshold
Definition Renderer.hpp:79
uint32_t ggxLutEIndex
Definition Renderer.hpp:42
float4 camDirection
Definition Renderer.hpp:41
uint32_t apertureBlades
Definition Renderer.hpp:26
float rasterRTShadowBias
Definition Renderer.hpp:88
float2 cameraTanHalfFov
Definition Renderer.hpp:30
uint32_t ptSamplesPerPixel
Definition Renderer.hpp:71
uint32_t dbgShowOutline
Definition Renderer.hpp:83
uint32_t ggxLutEavgIndex
Definition Renderer.hpp:43
uint32_t hasEnvMap
Definition Renderer.hpp:53
float4 camPosition
Definition Renderer.hpp:40
uint32_t adaptiveMinSamples
Definition Renderer.hpp:86
float sharcSceneScale
Definition Renderer.hpp:75
float apertureRotation
Definition Renderer.hpp:27
GSOffsetCount materials
Definition Renderer.hpp:14
GSOffsetCount lights
Definition Renderer.hpp:57
uint32_t envMapConditionalCDFIndex
Definition Renderer.hpp:51
float sharcRadianceScale
Definition Renderer.hpp:76
uint32_t ggxLutEIORInvavgIndex
Definition Renderer.hpp:47
float4x4 inverseView
Definition Renderer.hpp:19
float4 sharcPreviousCameraPosition
Definition Renderer.hpp:73
GSOffsetCount lightBVHNodes
Definition Renderer.hpp:59
uint32_t ptMaxBounces
Definition Renderer.hpp:69
float apertureRatio
Definition Renderer.hpp:28
float lodThreshold
Definition Renderer.hpp:15
uint32_t lightBVHValid
Definition Renderer.hpp:63
float fbWidth
Definition Renderer.hpp:33
uint32_t envMapMarginalCDFIndex
Definition Renderer.hpp:50
float4x4 previousViewProj
Definition Renderer.hpp:21
uint32_t ggxLutEIORIndex
Definition Renderer.hpp:44
Definition GPUScene.hpp:54