begin work on shading pass

This commit is contained in:
jacob 2026-01-22 04:35:49 -06:00
parent 5ad14b2dfd
commit 72327e4a27
5 changed files with 48 additions and 24 deletions

View File

@ -18,14 +18,15 @@
@ComputeShader V_ClearCellsCS @ComputeShader V_ClearCellsCS
@ComputeShader V_ClearParticlesCS @ComputeShader V_ClearParticlesCS
@ComputeShader V_BackdropCS @ComputeShader V_BackdropCS
@VertexShader V_DQuadVS @VertexShader V_QuadVS
@PixelShader V_DQuadPS @PixelShader V_QuadPS
@ComputeShader V_EmitParticlesCS
@ComputeShader V_SimParticlesCS
@ComputeShader V_ShadeCS
@VertexShader V_DVertVS @VertexShader V_DVertVS
@PixelShader V_DVertPS @PixelShader V_DVertPS
@VertexShader V_OverlayVS @VertexShader V_OverlayVS
@PixelShader V_OverlayPS @PixelShader V_OverlayPS
@ComputeShader V_EmitParticlesCS
@ComputeShader V_SimParticlesCS
////////////////////////////// //////////////////////////////
//- Api //- Api

View File

@ -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); G_DumbMemoryLayoutSync(frame->cl, draw_target, G_Layout_DirectQueue_RenderTargetWrite);

View File

@ -275,20 +275,20 @@ ComputeShader2D(V_BackdropCS, 8, 8)
////////////////////////////// //////////////////////////////
//- Vertex shader //- Vertex shader
VertexShader(V_DQuadVS, V_DQuadPSInput) VertexShader(V_QuadVS, V_QuadPSInput)
{ {
V_GpuParams params = G_Dereference<V_GpuParams>(V_ShaderConst_Params)[0]; V_GpuParams params = G_Dereference<V_GpuParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DQuad> quads = G_Dereference<V_DQuad>(params.quads); StructuredBuffer<V_Quad> quads = G_Dereference<V_Quad>(params.quads);
RWTexture2D<Vec4> target = G_Dereference<Vec4>(params.target_rw); RWTexture2D<Vec4> target = G_Dereference<Vec4>(params.target_rw);
V_DQuad quad = quads[SV_InstanceID]; V_Quad quad = quads[SV_InstanceID];
Vec2 rect_uv = RectUvFromVertexId(SV_VertexID); Vec2 rect_uv = RectUvFromVertexId(SV_VertexID);
// Vec2 tex_uv = lerp(quad.tex_uv0, quad.tex_uv1, rect_uv); // 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 = lerp(quad.p0, quad.p1, rect_uv);
Vec2 target_pos = 0; Vec2 target_pos = 0;
V_DQuadPSInput result; V_QuadPSInput result;
result.sv_position = Vec4(NdcFromPos(target_pos, countof(target)).xy, 0, 1); result.sv_position = Vec4(NdcFromPos(target_pos, countof(target)).xy, 0, 1);
result.quad_idx = SV_InstanceID; result.quad_idx = SV_InstanceID;
return result; return result;
@ -297,15 +297,15 @@ VertexShader(V_DQuadVS, V_DQuadPSInput)
////////////////////////////// //////////////////////////////
//- Pixel shader //- Pixel shader
PixelShader(V_DQuadPS, V_DQuadPSOutput, V_DQuadPSInput input) PixelShader(V_QuadPS, V_QuadPSOutput, V_QuadPSInput input)
{ {
V_GpuParams params = G_Dereference<V_GpuParams>(V_ShaderConst_Params)[0]; V_GpuParams params = G_Dereference<V_GpuParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DQuad> quads = G_Dereference<V_DQuad>(params.quads); StructuredBuffer<V_Quad> quads = G_Dereference<V_Quad>(params.quads);
V_DQuad quad = quads[input.quad_idx]; V_Quad quad = quads[input.quad_idx];
Vec4 final_color = 0; Vec4 final_color = 0;
V_DQuadPSOutput output; V_QuadPSOutput output;
output.sv_target0 = final_color; output.sv_target0 = final_color;
return output; return output;
} }
@ -461,7 +461,14 @@ ComputeShader(V_SimParticlesCS, 64)
} }
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Shapes //~ Shade
ComputeShader2D(V_ShadeCS, 8, 8)
{
}
////////////////////////////////////////////////////////////
//~ Debug shapes
////////////////////////////// //////////////////////////////
//- Vertex shader //- Vertex shader

View File

@ -1,13 +1,13 @@
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Quad shader types //~ Quad shader types
Struct(V_DQuadPSInput) Struct(V_QuadPSInput)
{ {
Semantic(Vec4, sv_position); Semantic(Vec4, sv_position);
Semantic(nointerpolation u32, quad_idx); Semantic(nointerpolation u32, quad_idx);
}; };
Struct(V_DQuadPSOutput) Struct(V_QuadPSOutput)
{ {
Semantic(Vec4, sv_target0); Semantic(Vec4, sv_target0);
}; };
@ -57,14 +57,17 @@ ComputeShader(V_ClearParticlesCS, 64);
ComputeShader2D(V_BackdropCS, 8, 8); ComputeShader2D(V_BackdropCS, 8, 8);
//- Quads //- Quads
VertexShader(V_DQuadVS, V_DQuadPSInput); VertexShader(V_QuadVS, V_QuadPSInput);
PixelShader(V_DQuadPS, V_DQuadPSOutput, V_DQuadPSInput input); PixelShader(V_QuadPS, V_QuadPSOutput, V_QuadPSInput input);
//- Particle simulation //- Particle simulation
ComputeShader(V_EmitParticlesCS, 64); ComputeShader(V_EmitParticlesCS, 64);
ComputeShader(V_SimParticlesCS, 64); ComputeShader(V_SimParticlesCS, 64);
//- Shapes //- Shade
ComputeShader2D(V_ShadeCS, 8, 8);
//- Debug shapes
VertexShader(V_DVertVS, V_DVertPSInput); VertexShader(V_DVertVS, V_DVertPSInput);
PixelShader(V_DVertPS, V_DVertPSOutput, V_DVertPSInput input); PixelShader(V_DVertPS, V_DVertPSOutput, V_DVertPSInput input);

View File

@ -169,18 +169,22 @@ Struct(V_Particle)
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Quad types //~ 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) Struct(V_DVert)
{ {