yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
e25683661
master
1//TEST(compute, vulkan):COMPARE_RENDER_COMPUTE:-vk -shaderobj -render-feature shader-resource-min-lod 2//TEST(compute):COMPARE_RENDER_COMPUTE:-shaderobj -render-feature shader-resource-min-lod 3// WGSL: There is no SampleGrad taking a LOD-clamp parameter in 4 5//TEST_INPUT: Texture2D(size=4, content = one):name=t2D 6//TEST_INPUT: Sampler:name=samplerState 7//TEST_INPUT: ubuffer(data=[0], stride=4):out,name=outputBuffer 8 9Texture2D t2D; 10SamplerState samplerState; 11RWStructuredBuffer<float> outputBuffer; 12 13cbuffer Uniforms 14{ 15 float4x4 modelViewProjection; 16} 17 18struct AssembledVertex 19{ 20 float3 position; 21 float3 color; 22 float2 uv; 23}; 24 25struct CoarseVertex 26{ 27 float3 color; 28 float2 uv; 29}; 30 31struct Fragment 32{ 33 float4 color; 34}; 35 36 37// Vertex Shader 38 39struct VertexStageInput 40{ 41 AssembledVertex assembledVertex : A; 42}; 43 44struct VertexStageOutput 45{ 46 CoarseVertex coarseVertex : CoarseVertex; 47 float4 sv_position : SV_Position; 48}; 49 50VertexStageOutput vertexMain(VertexStageInput input) 51{ 52 VertexStageOutput output; 53 54 float3 position = input.assembledVertex.position; 55 float3 color = input.assembledVertex.color; 56 57 output.coarseVertex.color = color; 58 output.sv_position = mul(modelViewProjection, float4(position, 1.0)); 59 output.coarseVertex.uv = input.assembledVertex.uv; 60 return output; 61} 62 63// Fragment Shader 64 65struct FragmentStageInput 66{ 67 CoarseVertex coarseVertex : CoarseVertex; 68}; 69 70struct FragmentStageOutput 71{ 72 Fragment fragment : SV_Target; 73}; 74 75FragmentStageOutput fragmentMain(FragmentStageInput input) 76{ 77 FragmentStageOutput output; 78 79 float3 color = input.coarseVertex.color; 80 float2 uv = input.coarseVertex.uv; 81 output.fragment.color = float4(color, 1.0); 82 83 float4 val = t2D.SampleGrad(samplerState, uv, float2(0,0), float2(0,0), 0, 0.5f); 84 outputBuffer[0] = val.x; 85 return output; 86}