diff options
| author | Yong He <yonghe@outlook.com> | 2021-04-16 10:35:42 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-16 10:35:42 -0700 |
| commit | 2886bc35e7b023370a8b8d56d78e5335eee2eb98 (patch) | |
| tree | ef40d6029f2f024a95602efb921c27383cf887f5 /examples/triangle/shaders.slang | |
| parent | 79e92395f8ce3d92c446e3bb3250d19ce33decd5 (diff) | |
Add Hello world example. (#1797)
Diffstat (limited to 'examples/triangle/shaders.slang')
| -rw-r--r-- | examples/triangle/shaders.slang | 66 |
1 files changed, 66 insertions, 0 deletions
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); +} |
