Skip to content

Commit 3adcc28

Browse files
committed
WIP
1 parent a99cfde commit 3adcc28

File tree

7 files changed

+17
-50
lines changed

7 files changed

+17
-50
lines changed

editor/app.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
306306

307307
// initial flags
308308
tStarterInit.tFlags |= PL_STARTER_FLAGS_DEPTH_BUFFER;
309+
tStarterInit.tFlags |= PL_STARTER_FLAGS_VSYNC_OFF;
309310

310311
// we handle these
311312
// tStarterInit.tFlags |= PL_STARTER_FLAGS_SHADER_EXT;

extensions/pl_renderer_ext.c

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,7 @@ pl_renderer_create_scene(plSceneInit tInit)
670670

671671
ptScene->ptComponentLibrary = tInit.ptComponentLibrary;
672672
ptScene->pcName = "unnamed scene";
673-
ptScene->tFlags = PL_SCENE_INTERNAL_FLAG_ACTIVE | PL_SCENE_INTERNAL_FLAG_PROBE_COUNT_DIRTY;
673+
ptScene->tFlags = PL_SCENE_INTERNAL_FLAG_ACTIVE;
674674
gptFreeList->create((uint64_t)tInit.szMaterialBufferSize, sizeof(plGpuMaterial), &ptScene->tMaterialFreeList);
675675

676676
// create global bindgroup
@@ -1128,11 +1128,8 @@ pl_renderer_create_scene(plSceneInit tInit)
11281128
ptScene->tDirectionalLightingShader = gptShaderVariant->get_shader("deferred_lighting_directional", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
11291129
ptScene->tSpotLightingShader = gptShaderVariant->get_shader("deferred_lighting_spot", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
11301130
ptScene->tPointLightingShader = gptShaderVariant->get_shader("deferred_lighting_point", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
1131-
aiLightingConstantData[0] = gptData->tRuntimeOptions.bPunctualLighting ? PL_RENDERING_FLAG_SHADOWS : 0;
1132-
ptScene->tEnvDirectionalLightingShader = gptShaderVariant->get_shader("deferred_lighting_directional", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
1133-
ptScene->tEnvSpotLightingShader = gptShaderVariant->get_shader("deferred_lighting_spot", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
1134-
ptScene->tEnvPointLightingShader = gptShaderVariant->get_shader("deferred_lighting_point", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
1135-
1131+
ptScene->tProbeLightingShader = gptShaderVariant->get_shader("deferred_lighting", NULL, NULL, NULL, &gptData->tRenderPassLayout);
1132+
11361133
for(uint32_t i = 0; i < gptGfx->get_frames_in_flight(); i++)
11371134
{
11381135
const plBindGroupUpdateBufferData atGlobalBufferData[] =
@@ -2665,12 +2662,7 @@ pl_renderer_reload_scene_shaders(plScene* ptScene)
26652662
ptScene->tDirectionalLightingShader = gptShaderVariant->get_shader("deferred_lighting_directional", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
26662663
ptScene->tSpotLightingShader = gptShaderVariant->get_shader("deferred_lighting_spot", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
26672664
ptScene->tPointLightingShader = gptShaderVariant->get_shader("deferred_lighting_point", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
2668-
int iProbeCount = (int)pl_sb_size(ptScene->sbtProbeData);
2669-
ptScene->tProbeLightingShader = gptShaderVariant->get_shader("deferred_lighting", NULL, NULL, &iProbeCount, &gptData->tRenderPassLayout);
2670-
aiLightingConstantData[0] = gptData->tRuntimeOptions.bPunctualLighting ? PL_RENDERING_FLAG_SHADOWS : 0;
2671-
ptScene->tEnvDirectionalLightingShader = gptShaderVariant->get_shader("deferred_lighting_directional", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
2672-
ptScene->tEnvSpotLightingShader = gptShaderVariant->get_shader("deferred_lighting_spot", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
2673-
ptScene->tEnvPointLightingShader = gptShaderVariant->get_shader("deferred_lighting_point", NULL, NULL, aiLightingConstantData, &gptData->tRenderPassLayout);
2665+
ptScene->tProbeLightingShader = gptShaderVariant->get_shader("deferred_lighting", NULL, NULL, NULL, &gptData->tRenderPassLayout);
26742666
gptShader->set_options(&tOriginalOptions);
26752667

26762668
const uint32_t uDrawableCount = pl_sb_size(ptScene->sbtDrawables);
@@ -2925,7 +2917,6 @@ void
29252917
pl_renderer_add_probe_to_scene(plScene* ptScene, plEntity tProbe)
29262918
{
29272919
pl__renderer_create_probe_data(ptScene, tProbe);
2928-
ptScene->tFlags |= PL_SCENE_INTERNAL_FLAG_PROBE_COUNT_DIRTY;
29292920
pl_renderer_add_drawable_objects_to_scene(ptScene, 1, &tProbe);
29302921
}
29312922

@@ -3977,13 +3968,6 @@ pl_renderer_begin_frame(void)
39773968
if(!(ptScene->tFlags & PL_SCENE_INTERNAL_FLAG_ACTIVE))
39783969
continue;
39793970

3980-
if(ptScene->tFlags & PL_SCENE_INTERNAL_FLAG_PROBE_COUNT_DIRTY)
3981-
{
3982-
ptScene->tFlags &= ~PL_SCENE_INTERNAL_FLAG_PROBE_COUNT_DIRTY;
3983-
int iProbeCount = (int)pl_sb_size(ptScene->sbtProbeData);
3984-
ptScene->tProbeLightingShader = gptShaderVariant->get_shader("deferred_lighting", NULL, NULL, &iProbeCount, &gptData->tRenderPassLayout);
3985-
}
3986-
39873971
if(ptScene->uMaterialDirtyValue > 0)
39883972
{
39893973
if(gptStage->completed(ptScene->uMaterialDirtyValue))

extensions/pl_renderer_internal.c

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3276,23 +3276,19 @@ pl__render_view_deferred_lighting_pass(plScene* ptScene, plRenderEncoder* ptScen
32763276
const uint32_t uSpotLightCount = pl_sb_size(ptScene->sbtSpotLightData);
32773277
const uint32_t uDirectionLightCount = pl_sb_size(ptScene->sbtDirectionLightData);
32783278

3279-
plShaderHandle tDirectionalShader = ptInfo->bProbe ? ptScene->tEnvDirectionalLightingShader : ptScene->tDirectionalLightingShader;
3280-
plShaderHandle tSpotLightingShader = ptInfo->bProbe ? ptScene->tEnvSpotLightingShader : ptScene->tSpotLightingShader;
3281-
plShaderHandle tPointLightingShader = ptInfo->bProbe ? ptScene->tEnvPointLightingShader : ptScene->tPointLightingShader;
3282-
32833279
if(gptData->tRuntimeOptions.bPunctualLighting)
32843280
{
3281+
gptGfx->reset_draw_stream(ptStream, uPointLightCount + uSpotLightCount);
32853282
for(uint32_t uLightIndex = 0; uLightIndex < uPointLightCount; uLightIndex++)
32863283
{
3287-
32883284
plDynamicBinding tLightingDynamicData = pl__allocate_dynamic_data(ptDevice);
32893285
plGpuDynDeferredLighting* ptLightingDynamicData = (plGpuDynDeferredLighting*)tLightingDynamicData.pcData;
32903286
ptLightingDynamicData->uGlobalIndex = ptInfo->uGlobalIndex;
32913287
ptLightingDynamicData->iLightIndex = (int)uLightIndex;
3292-
gptGfx->reset_draw_stream(ptStream, 1);
3288+
32933289
pl_add_to_draw_stream(ptStream, (plDrawStreamData)
32943290
{
3295-
.tShader = tPointLightingShader,
3291+
.tShader = ptScene->tPointLightingShader,
32963292
.auDynamicBuffers = {
32973293
tLightingDynamicData.uBufferHandle
32983294
},
@@ -3314,7 +3310,6 @@ pl__render_view_deferred_lighting_pass(plScene* ptScene, plRenderEncoder* ptScen
33143310
.uInstanceOffset = 0,
33153311
.uInstanceCount = 1
33163312
});
3317-
gptGfx->draw_stream(ptSceneEncoder, 1, ptInfo->ptArea);
33183313
}
33193314

33203315
for(uint32_t uLightIndex = 0; uLightIndex < uSpotLightCount; uLightIndex++)
@@ -3324,10 +3319,9 @@ pl__render_view_deferred_lighting_pass(plScene* ptScene, plRenderEncoder* ptScen
33243319
plGpuDynDeferredLighting* ptLightingDynamicData = (plGpuDynDeferredLighting*)tLightingDynamicData.pcData;
33253320
ptLightingDynamicData->uGlobalIndex = ptInfo->uGlobalIndex;
33263321
ptLightingDynamicData->iLightIndex = (int)uLightIndex;
3327-
gptGfx->reset_draw_stream(ptStream, 1);
33283322
pl_add_to_draw_stream(ptStream, (plDrawStreamData)
33293323
{
3330-
.tShader = tSpotLightingShader,
3324+
.tShader = ptScene->tSpotLightingShader,
33313325
.auDynamicBuffers = {
33323326
tLightingDynamicData.uBufferHandle
33333327
},
@@ -3349,20 +3343,20 @@ pl__render_view_deferred_lighting_pass(plScene* ptScene, plRenderEncoder* ptScen
33493343
.uInstanceOffset = 0,
33503344
.uInstanceCount = 1
33513345
});
3352-
gptGfx->draw_stream(ptSceneEncoder, 1, ptInfo->ptArea);
33533346
}
33543347

3348+
gptGfx->draw_stream(ptSceneEncoder, 1, ptInfo->ptArea);
3349+
gptGfx->reset_draw_stream(ptStream, uDirectionLightCount);
33553350
for(uint32_t uLightIndex = 0; uLightIndex < uDirectionLightCount; uLightIndex++)
33563351
{
33573352

33583353
plDynamicBinding tLightingDynamicData = pl__allocate_dynamic_data(ptDevice);
33593354
plGpuDynDeferredLighting* ptLightingDynamicData = (plGpuDynDeferredLighting*)tLightingDynamicData.pcData;
33603355
ptLightingDynamicData->uGlobalIndex = ptInfo->uGlobalIndex;
33613356
ptLightingDynamicData->iLightIndex = (int)uLightIndex;
3362-
gptGfx->reset_draw_stream(ptStream, 1);
33633357
pl_add_to_draw_stream(ptStream, (plDrawStreamData)
33643358
{
3365-
.tShader = tDirectionalShader,
3359+
.tShader = ptScene->tDirectionalLightingShader,
33663360
.auDynamicBuffers = {
33673361
tLightingDynamicData.uBufferHandle
33683362
},
@@ -3379,8 +3373,8 @@ pl__render_view_deferred_lighting_pass(plScene* ptScene, plRenderEncoder* ptScen
33793373
.uInstanceOffset = 0,
33803374
.uInstanceCount = 1
33813375
});
3382-
gptGfx->draw_stream(ptSceneEncoder, 1, ptInfo->ptArea);
33833376
}
3377+
gptGfx->draw_stream(ptSceneEncoder, 1, ptInfo->ptArea);
33843378
}
33853379

33863380
gptGfx->pop_render_debug_group(ptSceneEncoder);
@@ -3395,6 +3389,7 @@ pl__render_view_deferred_lighting_pass(plScene* ptScene, plRenderEncoder* ptScen
33953389
plGpuDynDeferredLighting* ptLightingDynamicData = (plGpuDynDeferredLighting*)tLightingDynamicData.pcData;
33963390
ptLightingDynamicData->uGlobalIndex = 0;
33973391
ptLightingDynamicData->iLightIndex = -1;
3392+
ptLightingDynamicData->iProbeCount = pl_sb_size(ptScene->sbtProbeData);
33983393

33993394
pl_add_to_draw_stream(ptStream, (plDrawStreamData)
34003395
{

extensions/pl_renderer_internal.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,7 @@ enum _plSceneInternalFlags
170170
PL_SCENE_INTERNAL_FLAG_ACTIVE = 1 << 0,
171171
PL_SCENE_INTERNAL_FLAG_TRANSMISSION_REQUIRED = 1 << 1,
172172
PL_SCENE_INTERNAL_FLAG_SHEEN_REQUIRED = 1 << 2,
173-
PL_SCENE_INTERNAL_FLAG_PROBE_COUNT_DIRTY = 1 << 3,
174-
PL_SCENE_INTERNAL_FLAG_OBJECT_COUNT_DIRTY = 1 << 4,
173+
PL_SCENE_INTERNAL_FLAG_OBJECT_COUNT_DIRTY = 1 << 3,
175174
};
176175

177176
//-----------------------------------------------------------------------------
@@ -417,9 +416,6 @@ typedef struct _plScene
417416
plShaderHandle tSpotLightingShader;
418417
plShaderHandle tProbeLightingShader;
419418
plShaderHandle tPointLightingShader;
420-
plShaderHandle tEnvDirectionalLightingShader;
421-
plShaderHandle tEnvSpotLightingShader;
422-
plShaderHandle tEnvPointLightingShader;
423419

424420
// render passes
425421
plRenderPassHandle tFirstShadowRenderPass;

shaders/pl_deferred_lighting_probe.frag

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@
88
#include "pl_math.glsl"
99
#include "pl_brdf.glsl"
1010

11-
//-----------------------------------------------------------------------------
12-
// [SECTION] specialication constants
13-
//-----------------------------------------------------------------------------
14-
15-
layout(constant_id = 0) const int iProbeCount = 0;
16-
1711
//-----------------------------------------------------------------------------
1812
// [SECTION] bind group 2
1913
//-----------------------------------------------------------------------------
@@ -113,7 +107,7 @@ void main()
113107

114108
int K = 0;
115109

116-
for(int i = 0; i < iProbeCount; i++)
110+
for(int i = 0; i < tObjectInfo.tData.iProbeCount; i++)
117111
{
118112
vec3 tDist = tProbeData.atData[i].tPosition - tWorldPosition.xyz;
119113
tDist = tDist * tDist;

shaders/pl_shader_interop_renderer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ PL_BEGIN_STRUCT(plGpuDynDeferredLighting)
585585

586586
uint uGlobalIndex;
587587
int iLightIndex;
588-
uint _uUnused0;
588+
int iProbeCount;
589589
uint _uUnused1;
590590
// ~~~~~~~~~~~~~~~~16 bytes~~~~~~~~~~~~~~~~
591591
PL_END_STRUCT(plGpuDynDeferredLighting)

shaders/shaders.pls

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -667,9 +667,6 @@
667667
"tAlphaOp": "PL_BLEND_OP_ADD"
668668
}
669669
],
670-
"atFragmentConstants": [
671-
{ "tType": "PL_DATA_TYPE_INT" }
672-
],
673670
"atBindGroupLayouts": [
674671
{ "pcName": "scene" },
675672
{ "pcName": "view" },

0 commit comments

Comments
 (0)