begin work on shading pass
This commit is contained in:
parent
5ad14b2dfd
commit
72327e4a27
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user