mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-10-31 00:06:05 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			HLSL
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			HLSL
		
	
	
	
	
	
| #pragma pack_matrix( row_major )
 | |
| 
 | |
| struct VertexShaderConstants
 | |
| {
 | |
|     matrix model;
 | |
|     matrix projectionAndView;
 | |
| };
 | |
| ConstantBuffer<VertexShaderConstants> Constants : register(b0);
 | |
| 
 | |
| struct VertexShaderInput
 | |
| {
 | |
|     float3 pos : POSITION;
 | |
|     float2 tex : TEXCOORD0;
 | |
|     float4 color : COLOR0;
 | |
| };
 | |
| 
 | |
| struct VertexShaderOutput
 | |
| {
 | |
|     float4 pos : SV_POSITION;
 | |
|     float2 tex : TEXCOORD0;
 | |
|     float4 color : COLOR0;
 | |
| };
 | |
| 
 | |
| #define ColorRS \
 | |
|     "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | |
|     "DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | |
|     "DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | |
|     "DENY_HULL_SHADER_ROOT_ACCESS )," \
 | |
|     "RootConstants(num32BitConstants=32, b0)"
 | |
| 
 | |
| #define TextureRS \
 | |
|     "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | |
|     "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | |
|     "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | |
|     "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | |
|     "RootConstants(num32BitConstants=32, b0),"\
 | |
|     "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | |
|     "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | |
| 
 | |
| #define YUVRS \
 | |
|     "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | |
|     "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | |
|     "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | |
|     "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | |
|     "RootConstants(num32BitConstants=32, b0),"\
 | |
|     "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | |
|     "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | |
|     "DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | |
|     "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | |
| 
 | |
| #define NVRS \
 | |
|     "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | |
|     "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | |
|     "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | |
|     "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | |
|     "RootConstants(num32BitConstants=32, b0),"\
 | |
|     "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | |
|     "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | |
|     "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | |
| 
 | |
| [RootSignature(ColorRS)]
 | |
| VertexShaderOutput mainColor(VertexShaderInput input)
 | |
| {
 | |
|     VertexShaderOutput output;
 | |
|     float4 pos = float4(input.pos, 1.0f);
 | |
| 
 | |
|     // Transform the vertex position into projected space.
 | |
|     pos = mul(pos, Constants.model);
 | |
|     pos = mul(pos, Constants.projectionAndView);
 | |
|     output.pos = pos;
 | |
| 
 | |
|     // Pass through texture coordinates and color values without transformation
 | |
|     output.tex = input.tex;
 | |
|     output.color = input.color;
 | |
| 
 | |
|     return output;
 | |
| }
 | |
| 
 | |
| [RootSignature(TextureRS)]
 | |
| VertexShaderOutput mainTexture(VertexShaderInput input)
 | |
| {
 | |
|     return mainColor(input);
 | |
| }
 | |
| 
 | |
| [RootSignature(YUVRS)]
 | |
| VertexShaderOutput mainYUV(VertexShaderInput input)
 | |
| {
 | |
|     return mainColor(input);
 | |
| }
 | |
| 
 | |
| [RootSignature(NVRS)]
 | |
| VertexShaderOutput mainNV(VertexShaderInput input)
 | |
| {
 | |
|     return mainColor(input);
 | |
| } | 
