From 72327e4a273ffa2d82452f18032380ba43480a83 Mon Sep 17 00:00:00 2001 From: jacob Date: Thu, 22 Jan 2026 04:35:49 -0600 Subject: [PATCH] begin work on shading pass --- src/pp/pp_vis/pp_vis.lay | 9 +++++---- src/pp/pp_vis/pp_vis_core.c | 11 ++++++++++- src/pp/pp_vis/pp_vis_gpu.g | 25 ++++++++++++++++--------- src/pp/pp_vis/pp_vis_gpu.gh | 13 ++++++++----- src/pp/pp_vis/pp_vis_shared.cgh | 14 +++++++++----- 5 files changed, 48 insertions(+), 24 deletions(-) diff --git a/src/pp/pp_vis/pp_vis.lay b/src/pp/pp_vis/pp_vis.lay index 4de4d636..9dccc202 100644 --- a/src/pp/pp_vis/pp_vis.lay +++ b/src/pp/pp_vis/pp_vis.lay @@ -18,14 +18,15 @@ @ComputeShader V_ClearCellsCS @ComputeShader V_ClearParticlesCS @ComputeShader V_BackdropCS -@VertexShader V_DQuadVS -@PixelShader V_DQuadPS +@VertexShader V_QuadVS +@PixelShader V_QuadPS +@ComputeShader V_EmitParticlesCS +@ComputeShader V_SimParticlesCS +@ComputeShader V_ShadeCS @VertexShader V_DVertVS @PixelShader V_DVertPS @VertexShader V_OverlayVS @PixelShader V_OverlayPS -@ComputeShader V_EmitParticlesCS -@ComputeShader V_SimParticlesCS ////////////////////////////// //- Api diff --git a/src/pp/pp_vis/pp_vis_core.c b/src/pp/pp_vis/pp_vis_core.c index 9ecdfe6f..6edace95 100644 --- a/src/pp/pp_vis/pp_vis_core.c +++ b/src/pp/pp_vis/pp_vis_core.c @@ -4245,7 +4245,16 @@ void V_TickForever(WaveLaneCtx *lane) } ////////////////////////////// - //- Shapes pass + //- Shading pass + + G_DumbGlobalMemorySync(frame->cl); + + { + G_Compute(frame->cl, V_ShadeCS, V_ThreadGroupSizeFromTexSize(frame->shade_dims)); + } + + ////////////////////////////// + //- Debug shapes pass G_DumbMemoryLayoutSync(frame->cl, draw_target, G_Layout_DirectQueue_RenderTargetWrite); diff --git a/src/pp/pp_vis/pp_vis_gpu.g b/src/pp/pp_vis/pp_vis_gpu.g index 113e3fa2..09f3ab78 100644 --- a/src/pp/pp_vis/pp_vis_gpu.g +++ b/src/pp/pp_vis/pp_vis_gpu.g @@ -275,20 +275,20 @@ ComputeShader2D(V_BackdropCS, 8, 8) ////////////////////////////// //- Vertex shader -VertexShader(V_DQuadVS, V_DQuadPSInput) +VertexShader(V_QuadVS, V_QuadPSInput) { V_GpuParams params = G_Dereference(V_ShaderConst_Params)[0]; - StructuredBuffer quads = G_Dereference(params.quads); + StructuredBuffer quads = G_Dereference(params.quads); RWTexture2D target = G_Dereference(params.target_rw); - V_DQuad quad = quads[SV_InstanceID]; + V_Quad quad = quads[SV_InstanceID]; Vec2 rect_uv = RectUvFromVertexId(SV_VertexID); // Vec2 tex_uv = lerp(quad.tex_uv0, quad.tex_uv1, rect_uv); // Vec2 target_pos = lerp(quad.p0, quad.p1, rect_uv); Vec2 target_pos = 0; - V_DQuadPSInput result; + V_QuadPSInput result; result.sv_position = Vec4(NdcFromPos(target_pos, countof(target)).xy, 0, 1); result.quad_idx = SV_InstanceID; return result; @@ -297,15 +297,15 @@ VertexShader(V_DQuadVS, V_DQuadPSInput) ////////////////////////////// //- Pixel shader -PixelShader(V_DQuadPS, V_DQuadPSOutput, V_DQuadPSInput input) +PixelShader(V_QuadPS, V_QuadPSOutput, V_QuadPSInput input) { V_GpuParams params = G_Dereference(V_ShaderConst_Params)[0]; - StructuredBuffer quads = G_Dereference(params.quads); - V_DQuad quad = quads[input.quad_idx]; + StructuredBuffer quads = G_Dereference(params.quads); + V_Quad quad = quads[input.quad_idx]; Vec4 final_color = 0; - V_DQuadPSOutput output; + V_QuadPSOutput output; output.sv_target0 = final_color; return output; } @@ -461,7 +461,14 @@ ComputeShader(V_SimParticlesCS, 64) } //////////////////////////////////////////////////////////// -//~ Shapes +//~ Shade + +ComputeShader2D(V_ShadeCS, 8, 8) +{ +} + +//////////////////////////////////////////////////////////// +//~ Debug shapes ////////////////////////////// //- Vertex shader diff --git a/src/pp/pp_vis/pp_vis_gpu.gh b/src/pp/pp_vis/pp_vis_gpu.gh index f1d5fd4a..2b0d03f4 100644 --- a/src/pp/pp_vis/pp_vis_gpu.gh +++ b/src/pp/pp_vis/pp_vis_gpu.gh @@ -1,13 +1,13 @@ //////////////////////////////////////////////////////////// //~ Quad shader types -Struct(V_DQuadPSInput) +Struct(V_QuadPSInput) { Semantic(Vec4, sv_position); Semantic(nointerpolation u32, quad_idx); }; -Struct(V_DQuadPSOutput) +Struct(V_QuadPSOutput) { Semantic(Vec4, sv_target0); }; @@ -57,14 +57,17 @@ ComputeShader(V_ClearParticlesCS, 64); ComputeShader2D(V_BackdropCS, 8, 8); //- Quads -VertexShader(V_DQuadVS, V_DQuadPSInput); -PixelShader(V_DQuadPS, V_DQuadPSOutput, V_DQuadPSInput input); +VertexShader(V_QuadVS, V_QuadPSInput); +PixelShader(V_QuadPS, V_QuadPSOutput, V_QuadPSInput input); //- Particle simulation ComputeShader(V_EmitParticlesCS, 64); ComputeShader(V_SimParticlesCS, 64); -//- Shapes +//- Shade +ComputeShader2D(V_ShadeCS, 8, 8); + +//- Debug shapes VertexShader(V_DVertVS, V_DVertPSInput); PixelShader(V_DVertPS, V_DVertPSOutput, V_DVertPSInput input); diff --git a/src/pp/pp_vis/pp_vis_shared.cgh b/src/pp/pp_vis/pp_vis_shared.cgh index b492b562..62657615 100644 --- a/src/pp/pp_vis/pp_vis_shared.cgh +++ b/src/pp/pp_vis/pp_vis_shared.cgh @@ -169,18 +169,22 @@ Struct(V_Particle) //////////////////////////////////////////////////////////// //~ Quad types -Enum(V_DQuadFlag) +Enum(V_QuadFlag) { - V_DQuadFlag_None = 0, + V_QuadFlag_None = 0, }; -Struct(V_DQuad) +Struct(V_Quad) { - V_DQuadFlag flags; + V_QuadFlag flags; + + + + SPR_Slice slice; }; //////////////////////////////////////////////////////////// -//~ Vert types +//~ Debug vert types Struct(V_DVert) {