//-------------------------------------------------------------------------------------- // File: ddsview.fx // // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. //-------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------- // Constant Buffer Variables //-------------------------------------------------------------------------------------- Texture1D tx1D : register(t0); Texture1DArray tx1DArray : register(t0); Texture2D tx2D : register(t0); Texture2DArray tx2DArray : register(t0); Texture3D tx3D : register(t0); SamplerState samLinear : register(s0); cbuffer cbArrayControl : register(b0) { float Index; }; //-------------------------------------------------------------------------------------- struct VS_INPUT { float4 Pos : POSITION; float4 Tex : TEXCOORD0; }; struct PS_INPUT { float4 Pos : SV_POSITION; float4 Tex : TEXCOORD0; }; //-------------------------------------------------------------------------------------- // Vertex Shader //-------------------------------------------------------------------------------------- PS_INPUT VS(VS_INPUT input) { PS_INPUT output = (PS_INPUT)0; output.Pos = input.Pos; output.Tex = input.Tex; return output; } //-------------------------------------------------------------------------------------- // Pixel Shader //-------------------------------------------------------------------------------------- float4 PS_1D(PS_INPUT input) : SV_Target { return tx1D.Sample(samLinear, input.Tex.x); } float4 PS_1DArray(PS_INPUT input) : SV_Target { return tx1DArray.Sample(samLinear, float2(input.Tex.x, Index)); } float4 PS_2D(PS_INPUT input) : SV_Target { return tx2D.Sample(samLinear, input.Tex.xy); } float4 PS_2DArray(PS_INPUT input) : SV_Target { return tx2DArray.Sample(samLinear, float3(input.Tex.xy, Index)); } float4 PS_3D(PS_INPUT input) : SV_Target { int Width, Height, Depth; tx3D.GetDimensions(Width, Height, Depth); return tx3D.Sample(samLinear, float3(input.Tex.xy, Index / Depth)); } float4 PS_Cube(PS_INPUT input) : SV_Target { return tx2DArray.Sample(samLinear, float3(input.Tex.xy, input.Tex.z + (6*Index))); }