Blaze/Mesh.slang

43 lines
983 B
Plaintext

struct VertexOut {
float4 outPosition : SV_Position;
float4 vertexColor : CoarseColor;
float2 texCoord0 : TexCoord0;
};
struct CameraData {
float4x4 model;
float4x4 view;
float4x4 proj;
};
struct PerFrameData {
CameraData camera;
Sampler2D texture;
}
ParameterBlock<PerFrameData> perFrameData;
[shader("vertex")]
VertexOut VertexMain(
uint vertexId: SV_VertexID,
float3 position,
float3 color,
float2 texCoord0,
) {
VertexOut output;
output.outPosition = mul(perFrameData.camera.proj, mul(perFrameData.camera.view, mul(perFrameData.camera.model, float4(position, 1.0f))));
output.vertexColor = float4(color, 1.0f);
output.texCoord0 = texCoord0 * 2.0f;
return output;
}
[shader("fragment")]
float4 FragmentMain(
float4 interpolatedColors : CoarseColor,
float2 uv0 : TexCoord0,
) : SV_Target0 {
return float4(perFrameData.texture.Sample(uv0).rgb, 1.0f) * interpolatedColors;
}