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_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

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);

View File

@ -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_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);
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_GpuParams>(V_ShaderConst_Params)[0];
StructuredBuffer<V_DQuad> quads = G_Dereference<V_DQuad>(params.quads);
V_DQuad quad = quads[input.quad_idx];
StructuredBuffer<V_Quad> quads = G_Dereference<V_Quad>(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

View File

@ -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);

View File

@ -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)
{