defer raytraceCS shader loading [workaround for #586 ]
This commit is contained in:
@@ -937,15 +937,7 @@ void LoadShaders()
|
||||
wi::jobsystem::Execute(ctx, [](wi::jobsystem::JobArgs args) { LoadShader(ShaderStage::CS, shaders[CSTYPE_COPYTEXTURE2D_UNORM4_BORDEREXPAND], "copytexture2D_unorm4_borderexpandCS.cso"); });
|
||||
wi::jobsystem::Execute(ctx, [](wi::jobsystem::JobArgs args) { LoadShader(ShaderStage::CS, shaders[CSTYPE_COPYTEXTURE2D_FLOAT4_BORDEREXPAND], "copytexture2D_float4_borderexpandCS.cso"); });
|
||||
wi::jobsystem::Execute(ctx, [](wi::jobsystem::JobArgs args) { LoadShader(ShaderStage::CS, shaders[CSTYPE_SKINNING], "skinningCS.cso"); });
|
||||
if (device->CheckCapability(GraphicsDeviceCapability::RAYTRACING))
|
||||
{
|
||||
wi::jobsystem::Execute(ctx, [](wi::jobsystem::JobArgs args) { LoadShader(ShaderStage::CS, shaders[CSTYPE_RAYTRACE], "raytraceCS_rtapi.cso", ShaderModel::SM_6_5); });
|
||||
}
|
||||
else
|
||||
{
|
||||
wi::jobsystem::Execute(ctx, [](wi::jobsystem::JobArgs args) { LoadShader(ShaderStage::CS, shaders[CSTYPE_RAYTRACE], "raytraceCS.cso"); });
|
||||
}
|
||||
|
||||
|
||||
wi::jobsystem::Execute(ctx, [](wi::jobsystem::JobArgs args) { LoadShader(ShaderStage::CS, shaders[CSTYPE_PAINT_TEXTURE], "paint_textureCS.cso"); });
|
||||
|
||||
wi::jobsystem::Execute(ctx, [](wi::jobsystem::JobArgs args) { LoadShader(ShaderStage::CS, shaders[CSTYPE_POSTPROCESS_BLUR_GAUSSIAN_FLOAT1], "blur_gaussian_float1CS.cso"); });
|
||||
@@ -7785,6 +7777,23 @@ void RayTraceScene(
|
||||
cb.xTraceSampleIndex = (uint32_t)accumulation_sample;
|
||||
device->BindDynamicConstantBuffer(cb, CB_GETBINDSLOT(RaytracingCB), cmd);
|
||||
|
||||
if (!shaders[CSTYPE_RAYTRACE].IsValid())
|
||||
{
|
||||
static auto init_shader = [] {
|
||||
if (device->CheckCapability(GraphicsDeviceCapability::RAYTRACING))
|
||||
{
|
||||
LoadShader(ShaderStage::CS, shaders[CSTYPE_RAYTRACE], "raytraceCS_rtapi.cso", ShaderModel::SM_6_5);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadShader(ShaderStage::CS, shaders[CSTYPE_RAYTRACE], "raytraceCS.cso");
|
||||
}
|
||||
};
|
||||
|
||||
static wi::eventhandler::Handle handle = wi::eventhandler::Subscribe(wi::eventhandler::EVENT_RELOAD_SHADERS, [](uint64_t userdata) { init_shader(); });
|
||||
init_shader();
|
||||
}
|
||||
|
||||
device->BindComputeShader(&shaders[CSTYPE_RAYTRACE], cmd);
|
||||
|
||||
const GPUResource* uavs[] = {
|
||||
|
||||
Reference in New Issue
Block a user