// // Copyright 2018 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Texture2DArray TextureF : register(t0); Texture2DArray TextureUI : register(t0); Texture2DArray TextureI : register(t0); SamplerState Sampler : register(s0); float4 PS_PassthroughRGBA2DArray(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)).rgba; } uint4 PS_PassthroughRGBA2DArrayUI(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { uint3 size; TextureUI.GetDimensions(size.x, size.y, size.z); int4 location = int4(size.xy * inTexCoord.xy, inLayer, 0); return TextureUI.Load(location).rgba; } int4 PS_PassthroughRGBA2DArrayI(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { uint3 size; TextureI.GetDimensions(size.x, size.y, size.z); int4 location = int4(size.xy * inTexCoord.xy, inLayer, 0); return TextureI.Load(location).rgba; } float4 PS_PassthroughRGB2DArray(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return float4(TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)).rgb, 1.0f); } uint4 PS_PassthroughRGB2DArrayUI(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { uint3 size; TextureUI.GetDimensions(size.x, size.y, size.z); int4 location = int4(size.xy * inTexCoord.xy, inLayer, 0); return uint4(TextureUI.Load(location).rgb, 1.0f); } int4 PS_PassthroughRGB2DArrayI(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { uint3 size; TextureI.GetDimensions(size.x, size.y, size.z); int4 location = int4(size.xy * inTexCoord.xy, inLayer, 0); return int4(TextureI.Load(location).rgb, 1.0f); } float4 PS_PassthroughRG2DArray(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return float4(TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)).rg, 0.0f, 1.0f); } uint4 PS_PassthroughRG2DArrayUI(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { uint3 size; TextureUI.GetDimensions(size.x, size.y, size.z); int4 location = int4(size.xy * inTexCoord.xy, inLayer, 0); return uint4(TextureUI.Load(location).rg, 0.0f, 1.0f); } int4 PS_PassthroughRG2DArrayI(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { uint3 size; TextureI.GetDimensions(size.x, size.y, size.z); int4 location = int4(size.xy * inTexCoord.xy, inLayer, 0); return int4(TextureI.Load(location).rg, 0.0f, 1.0f); } float4 PS_PassthroughR2DArray(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return float4(TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)).r, 0.0f, 0.0f, 1.0f); } uint4 PS_PassthroughR2DArrayUI(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { uint3 size; TextureUI.GetDimensions(size.x, size.y, size.z); int4 location = int4(size.xy * inTexCoord.xy, inLayer, 0); return uint4(TextureUI.Load(location).r, 0.0f, 0.0f, 1.0f); } int4 PS_PassthroughR2DArrayI(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { uint3 size; TextureI.GetDimensions(size.x, size.y, size.z); int4 location = int4(size.xy * inTexCoord.xy, inLayer, 0); return int4(TextureI.Load(location).r, 0.0f, 0.0f, 1.0f); } float4 PS_PassthroughLum2DArray(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return float4(TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)).rrr, 1.0f); } float4 PS_PassthroughLumAlpha2DArray(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)).rrra; } float4 PS_PassthroughRGBA2DArray_4444(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return round(TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)) * float4(15, 15, 15, 15)) / float4(15, 15, 15, 15); } float4 PS_PassthroughRGB2DArray_565(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return float4(round(TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)).rgb * float3(31, 63, 31)) / float3(31, 63, 31), 1.0f); } float4 PS_PassthroughRGBA2DArray_5551(in float4 inPosition : SV_POSITION, in uint inLayer : SV_RENDERTARGETARRAYINDEX, in float3 inTexCoord : TEXCOORD0) : SV_TARGET0 { return round(TextureF.Sample(Sampler, float3(inTexCoord.xy, inLayer)) * float4(31, 31, 31, 1)) / float4(31, 31, 31, 1); }