From 2886bc35e7b023370a8b8d56d78e5335eee2eb98 Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 16 Apr 2021 10:35:42 -0700 Subject: Add Hello world example. (#1797) --- examples/triangle/shaders.slang | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 examples/triangle/shaders.slang (limited to 'examples/triangle/shaders.slang') diff --git a/examples/triangle/shaders.slang b/examples/triangle/shaders.slang new file mode 100644 index 000000000..fe35db9c8 --- /dev/null +++ b/examples/triangle/shaders.slang @@ -0,0 +1,66 @@ +// shaders.slang + +// +// This file provides a simple vertex and fragment shader that can be compiled +// using Slang. This code should also be valid as HLSL, and thus it does not +// use any of the new language features supported by Slang. +// + +// Uniform data to be passed from application -> shader. +cbuffer Uniforms +{ + float4x4 modelViewProjection; +} + +// Per-vertex attributes to be assembled from bound vertex buffers. +struct AssembledVertex +{ + float3 position : POSITION; + float3 color : COLOR; +}; + +// Output of the vertex shader, and input to the fragment shader. +struct CoarseVertex +{ + float3 color; +}; + +// Output of the fragment shader +struct Fragment +{ + float4 color; +}; + +// Vertex Shader + +struct VertexStageOutput +{ + CoarseVertex coarseVertex : CoarseVertex; + float4 sv_position : SV_Position; +}; + +[shader("vertex")] +VertexStageOutput vertexMain( + AssembledVertex assembledVertex) +{ + VertexStageOutput output; + + float3 position = assembledVertex.position; + float3 color = assembledVertex.color; + + output.coarseVertex.color = color; + output.sv_position = mul(modelViewProjection, float4(position, 1.0)); + + return output; +} + +// Fragment Shader + +[shader("fragment")] +float4 fragmentMain( + CoarseVertex coarseVertex : CoarseVertex) : SV_Target +{ + float3 color = coarseVertex.color; + + return float4(color, 1.0); +} -- cgit v1.2.3