Skip to content

Commit 0be2f5e

Browse files
committed
WIP
1 parent 0944029 commit 0be2f5e

File tree

8 files changed

+213
-67
lines changed

8 files changed

+213
-67
lines changed

editor/app.c

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -429,42 +429,48 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
429429
plLightComponent* ptLight = NULL;
430430
gptRenderer->create_directional_light(ptAppData->ptComponentLibrary, "direction light", pl_create_vec3(0.0f, -1.0f, -0.085f), &ptLight);
431431
ptLight->uCascadeCount = 4;
432-
ptLight->fIntensity = 1.0f;
432+
ptLight->fIntensity = 20.0f;
433433
ptLight->uShadowResolution = 1024 * 2;
434434
ptLight->afCascadeSplits[0] = 0.10f;
435435
ptLight->afCascadeSplits[1] = 0.25f;
436436
ptLight->afCascadeSplits[2] = 0.50f;
437437
ptLight->afCascadeSplits[3] = 1.00f;
438438
ptLight->tFlags |= PL_LIGHT_FLAG_CAST_SHADOW | PL_LIGHT_FLAG_VISUALIZER;
439439

440-
plEntity tPointLight = gptRenderer->create_point_light(ptAppData->ptComponentLibrary, "point light", pl_create_vec3(0.0f, 2.0f, 2.0f), &ptLight);
441-
ptLight->uShadowResolution = 512;
442-
ptLight->tColor = (plVec3){0.0f, 1.0f, 0.0f};
443-
ptLight->tFlags |= PL_LIGHT_FLAG_CAST_SHADOW | PL_LIGHT_FLAG_VISUALIZER;
444-
plTransformComponent* ptPLightTransform = (plTransformComponent* )gptEcs->add_component(ptAppData->ptComponentLibrary, gptEcs->get_ecs_type_key_transform(), tPointLight);
445-
ptPLightTransform->tTranslation = pl_create_vec3(9.316f, 1.497f, -1.042f);
446-
447-
plEntity tSpotLight = gptRenderer->create_spot_light(ptAppData->ptComponentLibrary, "spot light", pl_create_vec3(0.0f, 4.0f, -1.18f), pl_create_vec3(0.0, -0.390f, 0.368f), &ptLight);
448-
ptLight->uShadowResolution = 512;
449-
ptLight->tColor = (plVec3){1.0f, 0.0f, 1.0f};
450-
ptLight->fRange = 10.0f;
451-
ptLight->fRadius = 0.025f;
452-
ptLight->fIntensity = 20.0f;
453-
ptLight->tFlags |= PL_LIGHT_FLAG_CAST_SHADOW | PL_LIGHT_FLAG_VISUALIZER;
454-
plTransformComponent* ptSLightTransform = (plTransformComponent* )gptEcs->add_component(ptAppData->ptComponentLibrary, gptEcs->get_ecs_type_key_transform(), tSpotLight);
455-
ptSLightTransform->tTranslation = pl_create_vec3(0.0f, 4.0f, -1.18f);
440+
// plEntity tPointLight = gptRenderer->create_point_light(ptAppData->ptComponentLibrary, "point light", pl_create_vec3(0.0f, 2.0f, 2.0f), &ptLight);
441+
// ptLight->uShadowResolution = 512;
442+
// ptLight->tColor = (plVec3){0.0f, 1.0f, 0.0f};
443+
// ptLight->tFlags |= PL_LIGHT_FLAG_CAST_SHADOW | PL_LIGHT_FLAG_VISUALIZER;
444+
// plTransformComponent* ptPLightTransform = (plTransformComponent* )gptEcs->add_component(ptAppData->ptComponentLibrary, gptEcs->get_ecs_type_key_transform(), tPointLight);
445+
// ptPLightTransform->tTranslation = pl_create_vec3(9.316f, 1.497f, -1.042f);
446+
447+
// plEntity tSpotLight = gptRenderer->create_spot_light(ptAppData->ptComponentLibrary, "spot light", pl_create_vec3(0.0f, 4.0f, -1.18f), pl_create_vec3(0.0, -0.390f, 0.368f), &ptLight);
448+
// ptLight->uShadowResolution = 512;
449+
// ptLight->tColor = (plVec3){1.0f, 0.0f, 1.0f};
450+
// ptLight->fRange = 10.0f;
451+
// ptLight->fRadius = 0.025f;
452+
// ptLight->fIntensity = 20.0f;
453+
// ptLight->tFlags |= PL_LIGHT_FLAG_CAST_SHADOW | PL_LIGHT_FLAG_VISUALIZER;
454+
// plTransformComponent* ptSLightTransform = (plTransformComponent* )gptEcs->add_component(ptAppData->ptComponentLibrary, gptEcs->get_ecs_type_key_transform(), tSpotLight);
455+
// ptSLightTransform->tTranslation = pl_create_vec3(0.0f, 4.0f, -1.18f);
456456

457457
plEnvironmentProbeComponent* ptProbe = NULL;
458458
plVec3 atProbeLocations[] = {
459459
pl_create_vec3(0.0f, 3.0f, 0.0f),
460-
// pl_create_vec3(-8.7f, 1.5f, 0.0f),
461-
// pl_create_vec3(8.8f, 1.5f, 0.0f),
460+
pl_create_vec3(0.0f, 1.5f, 4.0f),
461+
pl_create_vec3(0.0f, 1.5f, -4.0f),
462+
pl_create_vec3(9.0f, 1.0f, 0.0f),
463+
pl_create_vec3(9.0f, 2.5f, 4.0f),
464+
pl_create_vec3(9.0f, 2.5f, -4.0f),
465+
pl_create_vec3(-9.0f, 1.0f, 0.0f),
466+
pl_create_vec3(-8.7f, 5.0f, 0.0f),
467+
pl_create_vec3(8.8f, 5.0f, 0.0f),
462468
};
463469

464470
for(uint32_t i = 0; i < PL_ARRAYSIZE(atProbeLocations); i++)
465471
{
466472
gptRenderer->create_environment_probe(ptAppData->ptComponentLibrary, "Probe", atProbeLocations[i], &ptProbe);
467-
ptProbe->fRange = 30.0f;
473+
ptProbe->fRange = 25.0f;
468474
ptProbe->uResolution = 128;
469475
ptProbe->uSamples = 1024;
470476
ptProbe->uInterval = 6;

extensions/pl_graphics_ext.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ typedef int plCommandPoolResetFlags; // -> enum _plCommandPoolResetFlags // Fl
273273
typedef int plPassResourceUsageFlags; // -> enum _plPassResourceUsageFlags // Flags: resource usage (PL_PASS_RESOURCE_USAGE_XXXX)
274274
typedef int plGraphicsBackend; // -> enum _plGraphicsBackend // Enum: graphics backend (PL_GRAPHICS_BACKEND_XXXX)
275275
typedef int plBlendMode; // -> enum _plBlendMode // Enum: blend state abstraction (PL_BLEND_MODE_XXXX)
276+
typedef int plBorderColor; // -> enum _plBorderColor // Enum: texture border color (PL_BORDER_COLOR_XXXX)
276277

277278
// external
278279
typedef struct _plWindow plWindow; // pl_os.h
@@ -609,6 +610,7 @@ typedef struct _plSamplerDesc
609610
{
610611
float fMinMip;
611612
float fMaxMip;
613+
float fMipBias; // Vulkan only until MacOS 26+
612614
float fMaxAnisotropy;
613615
bool bUnnormalizedCoordinates;
614616
plFilter tMagFilter;
@@ -618,6 +620,7 @@ typedef struct _plSamplerDesc
618620
plAddressMode tUAddressMode;
619621
plAddressMode tVAddressMode;
620622
plAddressMode tWAddressMode;
623+
plBorderColor tBorderColor;
621624
const char* pcDebugName; // default: "unnamed sampler"
622625
} plSamplerDesc;
623626

@@ -1772,6 +1775,16 @@ enum _plBlendMode
17721775
PL_BLEND_MODE_COUNT
17731776
};
17741777

1778+
enum _plBorderColor
1779+
{
1780+
PL_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
1781+
PL_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
1782+
PL_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
1783+
PL_BORDER_COLOR_INT_TRANSPARENT_BLACK,
1784+
PL_BORDER_COLOR_INT_OPAQUE_BLACK,
1785+
PL_BORDER_COLOR_INT_OPAQUE_WHITE
1786+
};
1787+
17751788
//-----------------------------------------------------------------------------
17761789
// [SECTION] internal enums (NOT FOR PUBLIC CONSUMPTION)
17771790
//-----------------------------------------------------------------------------

extensions/pl_graphics_metal.m

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -949,13 +949,27 @@
949949
samplerDesc.sAddressMode = pl__metal_wrap(ptDesc->tUAddressMode);
950950
samplerDesc.tAddressMode = pl__metal_wrap(ptDesc->tVAddressMode);
951951
samplerDesc.rAddressMode = pl__metal_wrap(ptDesc->tWAddressMode);
952-
samplerDesc.borderColor = MTLSamplerBorderColorTransparentBlack;
953952
samplerDesc.compareFunction = pl__metal_compare(ptDesc->tCompare);
954953
samplerDesc.lodMinClamp = ptDesc->fMinMip;
955954
samplerDesc.lodMaxClamp = ptDesc->fMaxMip;
956-
// samplerDesc.lodAverage = NO;
955+
// samplerDesc.lodBias = ptDesc->fMipBias; // not available until MacOS 26
957956
samplerDesc.label = [NSString stringWithUTF8String:ptDesc->pcDebugName];
958957

958+
switch(ptDesc->tBorderColor)
959+
{
960+
case PL_BORDER_COLOR_INT_TRANSPARENT_BLACK:
961+
case PL_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: samplerDesc.borderColor = MTLSamplerBorderColorTransparentBlack; break;
962+
963+
case PL_BORDER_COLOR_INT_OPAQUE_BLACK:
964+
case PL_BORDER_COLOR_FLOAT_OPAQUE_BLACK: samplerDesc.borderColor = MTLSamplerBorderColorOpaqueBlack; break;
965+
966+
case PL_BORDER_COLOR_FLOAT_OPAQUE_WHITE:
967+
case PL_BORDER_COLOR_INT_OPAQUE_WHITE: samplerDesc.borderColor = MTLSamplerBorderColorOpaqueWhite; break;
968+
969+
default:
970+
samplerDesc.borderColor = MTLSamplerBorderColorTransparentBlack;
971+
}
972+
959973
if(ptDesc->fMaxAnisotropy == 0.0f)
960974
samplerDesc.maxAnisotropy = 16.0f;
961975
else

extensions/pl_graphics_vulkan.c

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -943,7 +943,7 @@ pl_create_sampler(plDevice* ptDevice, const plSamplerDesc* ptDesc)
943943
plSampler* ptSampler = pl_get_sampler(ptDevice, tHandle);
944944
ptSampler->tDesc = *ptDesc;
945945

946-
const VkSamplerCreateInfo tSamplerInfo = {
946+
VkSamplerCreateInfo tSamplerInfo = {
947947
.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
948948
.minFilter = pl__vulkan_filter(ptDesc->tMinFilter),
949949
.magFilter = pl__vulkan_filter(ptDesc->tMagFilter),
@@ -952,16 +952,27 @@ pl_create_sampler(plDevice* ptDevice, const plSamplerDesc* ptDesc)
952952
.addressModeW = pl__vulkan_wrap(ptDesc->tWAddressMode),
953953
.anisotropyEnable = (bool)(ptDevice->tInfo.tCapabilities & PL_DEVICE_CAPABILITY_SAMPLER_ANISOTROPY),
954954
.maxAnisotropy = ptDesc->fMaxAnisotropy == 0 ? (ptDevice->tInfo.tCapabilities & PL_DEVICE_CAPABILITY_SAMPLER_ANISOTROPY) : ptDesc->fMaxAnisotropy,
955-
.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
956955
.unnormalizedCoordinates = ptDesc->bUnnormalizedCoordinates ? VK_TRUE : VK_FALSE,
957956
.compareEnable = ptDesc->tCompare == 0 ? VK_FALSE : VK_TRUE,
958957
.compareOp = pl__vulkan_compare(ptDesc->tCompare),
959958
.mipmapMode = ptDesc->tMipmapMode == PL_MIPMAP_MODE_LINEAR ? VK_SAMPLER_MIPMAP_MODE_LINEAR : VK_SAMPLER_MIPMAP_MODE_NEAREST,
960-
.mipLodBias = 0.0f,
959+
.mipLodBias = ptDesc->fMipBias,
961960
.minLod = ptDesc->fMinMip,
962961
.maxLod = ptDesc->fMaxMip,
963962
};
964963

964+
switch(ptDesc->tBorderColor)
965+
{
966+
case PL_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: tSamplerInfo.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; break;
967+
case PL_BORDER_COLOR_FLOAT_OPAQUE_BLACK: tSamplerInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK; break;
968+
case PL_BORDER_COLOR_FLOAT_OPAQUE_WHITE: tSamplerInfo.borderColor = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE; break;
969+
case PL_BORDER_COLOR_INT_TRANSPARENT_BLACK: tSamplerInfo.borderColor = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK; break;
970+
case PL_BORDER_COLOR_INT_OPAQUE_BLACK: tSamplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK; break;
971+
case PL_BORDER_COLOR_INT_OPAQUE_WHITE: tSamplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_WHITE; break;
972+
default:
973+
tSamplerInfo.borderColor = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
974+
}
975+
965976
VkSampler tVkSampler = VK_NULL_HANDLE;
966977
PL_VULKAN(vkCreateSampler(ptDevice->tLogicalDevice, &tSamplerInfo, gptGraphics->ptAllocationCallbacks, &tVkSampler));
967978

extensions/pl_renderer_ext.c

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2213,8 +2213,8 @@ pl_renderer_outline_entities(plScene* ptScene, uint32_t uCount, plEntity* atEnti
22132213
iTextureMappingFlags,
22142214
ptMaterial->tFlags,
22152215
iObjectRenderingFlags,
2216-
pl_sb_capacity(ptScene->sbtLightData),
2217-
pl_sb_capacity(ptScene->sbtProbeData),
2216+
pl_sb_size(ptScene->sbtLightData),
2217+
pl_sb_size(ptScene->sbtProbeData),
22182218
gptData->tRuntimeOptions.tShaderDebugMode
22192219
};
22202220

@@ -2337,7 +2337,7 @@ pl_renderer_reload_scene_shaders(plScene* ptScene)
23372337
int aiLightingConstantData[] = {iSceneWideRenderingFlags, gptData->tRuntimeOptions.tShaderDebugMode, 0};
23382338
ptScene->tLightingShader = gptShaderVariant->get_shader("deferred_lighting", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
23392339
ptScene->tDeferredLightingVolumeShader = gptShaderVariant->get_shader("deferred_lighting_volume", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
2340-
aiLightingConstantData[2] = pl_sb_capacity(ptScene->sbtProbeData);
2340+
aiLightingConstantData[2] = pl_sb_size(ptScene->sbtProbeData);
23412341
ptScene->tProbeLightingShader = gptShaderVariant->get_shader("deferred_lighting", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
23422342
aiLightingConstantData[0] = gptData->tRuntimeOptions.bPunctualLighting ? (PL_RENDERING_FLAG_USE_PUNCTUAL | PL_RENDERING_FLAG_SHADOWS) : 0;
23432343
aiLightingConstantData[2] = 0;
@@ -2453,7 +2453,7 @@ pl_renderer_finalize_scene(plScene* ptScene)
24532453
int aiLightingConstantData[] = {iSceneWideRenderingFlags, gptData->tRuntimeOptions.tShaderDebugMode, 0};
24542454
ptScene->tLightingShader = gptShaderVariant->get_shader("deferred_lighting", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
24552455
ptScene->tDeferredLightingVolumeShader = gptShaderVariant->get_shader("deferred_lighting_volume", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
2456-
aiLightingConstantData[2] = pl_sb_capacity(ptScene->sbtProbeData);
2456+
aiLightingConstantData[2] = pl_sb_size(ptScene->sbtProbeData);
24572457
ptScene->tProbeLightingShader = gptShaderVariant->get_shader("deferred_lighting", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
24582458
aiLightingConstantData[0] = gptData->tRuntimeOptions.bPunctualLighting ? (PL_RENDERING_FLAG_USE_PUNCTUAL | PL_RENDERING_FLAG_SHADOWS) : 0;
24592459
aiLightingConstantData[2] = 0;
@@ -3013,7 +3013,13 @@ pl_renderer_prepare_view(plView* ptView, plCamera* ptCamera)
30133013
plEnvironmentProbeData* ptProbe = &ptScene->sbtProbeData[uProbeIndex];
30143014
plEnvironmentProbeComponent* ptProbeComp = gptECS->get_component(ptScene->ptComponentLibrary, gptData->tEnvironmentProbeComponentType, ptProbe->tEntity);
30153015
plObjectComponent* ptObject = gptECS->get_component(ptScene->ptComponentLibrary, gptData->tObjectComponentType, ptProbe->tEntity);
3016+
plTransformComponent* ptTransform = gptECS->get_component(ptScene->ptComponentLibrary, gptData->tObjectComponentType, ptObject->tTransform);
30163017
gptDraw->add_3d_aabb(ptView->pt3DDrawList, ptObject->tAABB.tMin, ptObject->tAABB.tMax, (plDrawLineOptions){.uColor = PL_COLOR_32_RGB(0.0f, 1.0f, 0.0f), .fThickness = 0.02f});
3018+
plSphere tSphere = {
3019+
.fRadius = ptProbeComp->fRange,
3020+
.tCenter = ptTransform->tTranslation
3021+
};
3022+
gptDraw->add_3d_sphere(ptView->pt3DDrawList, tSphere, 6, 6, (plDrawLineOptions){.uColor = PL_COLOR_32_LIGHT_GREY, .fThickness = 0.005f});
30173023
}
30183024
}
30193025

@@ -4216,33 +4222,6 @@ pl_renderer_render_view(plView* ptView, plCamera* ptCamera, plCamera* ptCullCame
42164222
pl_end_cpu_sample(gptProfile, 0);
42174223
}
42184224

4219-
{
4220-
const plBeginCommandInfo tPostBeginInfo = {
4221-
.uWaitSemaphoreCount = 1,
4222-
.atWaitSempahores = {gptStarter->get_current_timeline_semaphore()},
4223-
.auWaitSemaphoreValues = {gptStarter->get_current_timeline_value()},
4224-
};
4225-
4226-
plCommandBuffer* ptPostCmdBuffer = gptGfx->request_command_buffer(ptCmdPool, "tonemap");
4227-
gptGfx->begin_command_recording(ptPostCmdBuffer, &tPostBeginInfo);
4228-
4229-
ptSceneEncoder = gptGfx->begin_render_pass(ptPostCmdBuffer, ptView->tFinalRenderPass, NULL);
4230-
gptGfx->set_depth_bias(ptSceneEncoder, 0.0f, 0.0f, 0.0f);
4231-
gptDrawBackend->submit_3d_drawlist(ptView->pt3DDrawList, ptSceneEncoder, tDimensions.x, tDimensions.y, &tMVP, PL_DRAW_FLAG_REVERSE_Z_DEPTH | PL_DRAW_FLAG_DEPTH_TEST, 1);
4232-
gptDrawBackend->submit_3d_drawlist(ptView->pt3DSelectionDrawList, ptSceneEncoder, tDimensions.x, tDimensions.y, &tMVP, PL_DRAW_FLAG_REVERSE_Z_DEPTH | PL_DRAW_FLAG_DEPTH_TEST, 1);
4233-
gptGfx->end_render_pass(ptSceneEncoder);
4234-
4235-
gptGfx->end_command_recording(ptPostCmdBuffer);
4236-
4237-
const plSubmitInfo tPostSubmitInfo = {
4238-
.uSignalSemaphoreCount = 1,
4239-
.atSignalSempahores = {gptStarter->get_current_timeline_semaphore()},
4240-
.auSignalSemaphoreValues = {gptStarter->increment_current_timeline_value()}
4241-
};
4242-
gptGfx->submit_command_buffer(ptPostCmdBuffer, &tPostSubmitInfo);
4243-
gptGfx->return_command_buffer(ptPostCmdBuffer);
4244-
}
4245-
42464225
{
42474226
const plBindGroupDesc tTonemapBGDesc = {
42484227
.ptPool = gptData->aptTempGroupPools[gptGfx->get_current_frame_index()],
@@ -4327,6 +4306,33 @@ pl_renderer_render_view(plView* ptView, plCamera* ptCamera, plCamera* ptCullCame
43274306
gptGfx->return_command_buffer(ptPostCmdBuffer);
43284307
}
43294308

4309+
{
4310+
const plBeginCommandInfo tPostBeginInfo = {
4311+
.uWaitSemaphoreCount = 1,
4312+
.atWaitSempahores = {gptStarter->get_current_timeline_semaphore()},
4313+
.auWaitSemaphoreValues = {gptStarter->get_current_timeline_value()},
4314+
};
4315+
4316+
plCommandBuffer* ptPostCmdBuffer = gptGfx->request_command_buffer(ptCmdPool, "tonemap");
4317+
gptGfx->begin_command_recording(ptPostCmdBuffer, &tPostBeginInfo);
4318+
4319+
ptSceneEncoder = gptGfx->begin_render_pass(ptPostCmdBuffer, ptView->tFinalRenderPass, NULL);
4320+
gptGfx->set_depth_bias(ptSceneEncoder, 0.0f, 0.0f, 0.0f);
4321+
gptDrawBackend->submit_3d_drawlist(ptView->pt3DDrawList, ptSceneEncoder, tDimensions.x, tDimensions.y, &tMVP, PL_DRAW_FLAG_REVERSE_Z_DEPTH | PL_DRAW_FLAG_DEPTH_TEST, 1);
4322+
gptDrawBackend->submit_3d_drawlist(ptView->pt3DSelectionDrawList, ptSceneEncoder, tDimensions.x, tDimensions.y, &tMVP, PL_DRAW_FLAG_REVERSE_Z_DEPTH | PL_DRAW_FLAG_DEPTH_TEST, 1);
4323+
gptGfx->end_render_pass(ptSceneEncoder);
4324+
4325+
gptGfx->end_command_recording(ptPostCmdBuffer);
4326+
4327+
const plSubmitInfo tPostSubmitInfo = {
4328+
.uSignalSemaphoreCount = 1,
4329+
.atSignalSempahores = {gptStarter->get_current_timeline_semaphore()},
4330+
.auSignalSemaphoreValues = {gptStarter->increment_current_timeline_value()}
4331+
};
4332+
gptGfx->submit_command_buffer(ptPostCmdBuffer, &tPostSubmitInfo);
4333+
gptGfx->return_command_buffer(ptPostCmdBuffer);
4334+
}
4335+
43304336
// update stats
43314337
static double* pdVisibleOpaqueObjects = NULL;
43324338
static double* pdVisibleTransparentObjects = NULL;

shaders/bg_view.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ layout(set = PL_VIEW_SET_LOCATION, binding = 4) readonly buffer plShadowData
3333
plGpuLightShadow atData[];
3434
} tShadowData;
3535

36-
layout(set = PL_VIEW_SET_LOCATION, binding = 5) readonly buffer plProbeData
36+
layout(set = PL_VIEW_SET_LOCATION, binding = 5) buffer plProbeData
3737
{
3838
plGpuProbe atData[];
3939
} tProbeData;

0 commit comments

Comments
 (0)