117 {
119
121
123
125
126 RayTracingRenderBehaveBuilder builder{
this,
m_VulkanRayTracing.get(), frameInfo.m_FrameIndex, frameInfo.m_ImageIndex};
127
128 builder.BeginRenderPass();
129
131
133
134 builder.BindPipeline("RayTracingRenderer.RayTracing.Default");
135
136 builder.UpdateAccelerationStructure(2, 0,
m_VulkanRayTracing->GetAccelerationStructure());
137
139
140 builder.UpdateStorageBuffer<RayTracingR::DirectionalLightBuffer>(3, 1, [&](auto& ssbo) {
142 });
143
144 builder.UpdateStorageBuffer<RayTracingR::PointLightBuffer>(3, 2, [&](auto& ssbo) {
146 });
147
148 builder.UpdatePushConstant<RayTracingR::PushConstant>([&](auto& push) {
149 IterWorldCompWithBreak<SkyBoxComponent>(frameInfo, [&](int entityId, TransformComponent& transComp, SkyBoxComponent& camComp){
150 push.entityID = entityId;
151 return true;
152 });
153 });
154
155 builder.TraceRays();
156
157 builder.EndRenderPass();
158 }
#define SPICES_PROFILE_ZONE
static DescriptorSetInfo & GetByName(const String2 &name)
Get a DescriptorSetInfo by owner's name.
static std::shared_ptr< VulkanRayTracing > m_VulkanRayTracing
In Used VulkanRayTracing.
void UpdateTopLevelAS(FrameInfo &frameInfo, std::shared_ptr< VulkanRayTracing > rayTracingInstance, bool update=true)
Update TopLevelAS.
void GetDirectionalLight(FrameInfo &frameInfo, std::array< SpicesShader::DirectionalLight, SpicesShader::DIRECTIONALLIGHT_BUFFER_MAXNUM > &dLightBuffer)
Get DirectionalLightComponent's render data in World.
void GetPointLight(FrameInfo &frameInfo, std::array< SpicesShader::PointLight, SpicesShader::POINTLIGHT_BUFFER_MAXNUM > &pLightBuffer)
Get PointLightComponent's render data in World.