59 lines
1.5 KiB
HLSL
59 lines
1.5 KiB
HLSL
////////////////////////////////////////////////////////////
|
|
//~ Test shader
|
|
|
|
ComputeShader(PT_TestCS)
|
|
{
|
|
PT_SharedFrame frame = G_Deref(PT_ShaderReg_Frame, StructuredBuffer<PT_SharedFrame>)[0];
|
|
RWTexture2D<Vec4> target_tex = G_Deref(frame.compute_target, RWTexture2D<Vec4>);
|
|
|
|
Vec2U32 target_tex_size = G_Count2D(target_tex);
|
|
|
|
Vec2I32 id = SV_DispatchThreadID;
|
|
if (all(id < G_Count2D(target_tex)))
|
|
{
|
|
target_tex[id] = Vec4(0, 1, 0, 1);
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////
|
|
//~ Blit shader
|
|
|
|
//////////////////////////////
|
|
//- Vertex shader
|
|
|
|
VertexShader(PT_BlitVS, PT_BlitPSInput)
|
|
{
|
|
Vec2 uv = RectUvFromIdx(SV_VertexID);
|
|
PT_BlitPSInput result;
|
|
result.sv_position = Vec4(NdcFromUv(uv).xy, 0, 1);
|
|
result.src_uv = uv;
|
|
return result;
|
|
}
|
|
|
|
//////////////////////////////
|
|
//- Pixel shader
|
|
|
|
PixelShader(PT_BlitPS, PT_BlitPSOutput, PT_BlitPSInput input)
|
|
{
|
|
PT_SharedFrame frame = G_Deref(PT_ShaderReg_Frame, StructuredBuffer<PT_SharedFrame>)[0];
|
|
SamplerState sampler = G_Deref(frame.sampler, SamplerState);
|
|
Texture2D<Vec4> src = G_Deref(frame.compute_target, Texture2D<Vec4>);
|
|
Texture3D<u32> noise = G_Deref(frame.noise_tex, Texture3D<u32>);
|
|
|
|
Vec2 uv = input.src_uv;
|
|
Vec4 tex_col = src.Sample(sampler, uv);
|
|
|
|
Vec3U32 noise_coord = 0;
|
|
noise_coord.x = uv.x * 128.0;
|
|
noise_coord.y = uv.y * 128.0;
|
|
noise_coord.z = 0;
|
|
u32 noise_val = noise[noise_coord];
|
|
|
|
Vec4 result = tex_col;
|
|
result.r = Norm16(noise_val);
|
|
|
|
PT_BlitPSOutput output;
|
|
output.sv_target0 = result;
|
|
return output;
|
|
}
|