Add test case for tint:978
Bug: tint:978 Change-Id: I2b203e1eec53e70ab34d2063c3b49848bdacb780 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/57708 Auto-Submit: Ben Clayton <bclayton@google.com> Commit-Queue: Antonio Maiorano <amaiorano@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
parent
de2b7db244
commit
d35975adf6
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
struct FragmentInput
|
||||||
|
{
|
||||||
|
[[ location( 2 ) ]] vUv : vec2<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct FragmentOutput
|
||||||
|
{
|
||||||
|
[[ location( 0 ) ]] color : vec4<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[ binding( 5 ), group( 1 ) ]] var depthMap : texture_depth_2d;
|
||||||
|
|
||||||
|
[[ binding( 3 ), group( 1 ) ]] var texSampler : sampler;
|
||||||
|
|
||||||
|
|
||||||
|
[[stage(fragment)]]
|
||||||
|
fn main( fIn : FragmentInput ) -> FragmentOutput
|
||||||
|
{
|
||||||
|
let sample : f32 = textureSample( depthMap , texSampler, fIn.vUv );
|
||||||
|
let color : vec3<f32> = vec3<f32>( sample, sample, sample );
|
||||||
|
|
||||||
|
var fOut : FragmentOutput;
|
||||||
|
fOut.color = vec4<f32>( color, 1.0 );
|
||||||
|
|
||||||
|
return fOut;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
struct FragmentInput {
|
||||||
|
float2 vUv;
|
||||||
|
};
|
||||||
|
struct FragmentOutput {
|
||||||
|
float4 color;
|
||||||
|
};
|
||||||
|
|
||||||
|
Texture2D depthMap : register(t5, space1);
|
||||||
|
SamplerState texSampler : register(s3, space1);
|
||||||
|
|
||||||
|
struct tint_symbol_2 {
|
||||||
|
float2 vUv : TEXCOORD2;
|
||||||
|
};
|
||||||
|
struct tint_symbol_3 {
|
||||||
|
float4 color : SV_Target0;
|
||||||
|
};
|
||||||
|
|
||||||
|
tint_symbol_3 main(tint_symbol_2 tint_symbol_1) {
|
||||||
|
const FragmentInput fIn = {tint_symbol_1.vUv};
|
||||||
|
const float tint_symbol = depthMap.Sample(texSampler, fIn.vUv).x;
|
||||||
|
const float3 color = float3(tint_symbol, tint_symbol, tint_symbol);
|
||||||
|
FragmentOutput fOut = (FragmentOutput)0;
|
||||||
|
fOut.color = float4(color, 1.0f);
|
||||||
|
const tint_symbol_3 tint_symbol_4 = {fOut.color};
|
||||||
|
return tint_symbol_4;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
struct FragmentInput {
|
||||||
|
float2 vUv;
|
||||||
|
};
|
||||||
|
struct FragmentOutput {
|
||||||
|
float4 color;
|
||||||
|
};
|
||||||
|
struct tint_symbol_2 {
|
||||||
|
float2 vUv [[user(locn2)]];
|
||||||
|
};
|
||||||
|
struct tint_symbol_3 {
|
||||||
|
float4 color [[color(0)]];
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment tint_symbol_3 tint_symbol(depth2d<float, access::sample> tint_symbol_5 [[texture(5)]], sampler tint_symbol_6 [[sampler(3)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
|
||||||
|
FragmentInput const fIn = {.vUv=tint_symbol_1.vUv};
|
||||||
|
float const sample = tint_symbol_5.sample(tint_symbol_6, fIn.vUv);
|
||||||
|
float3 const color = float3(sample, sample, sample);
|
||||||
|
FragmentOutput fOut = {};
|
||||||
|
fOut.color = float4(color, 1.0f);
|
||||||
|
tint_symbol_3 const tint_symbol_4 = {.color=fOut.color};
|
||||||
|
return tint_symbol_4;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 51
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_3
|
||||||
|
OpExecutionMode %main OriginUpperLeft
|
||||||
|
OpName %depthMap "depthMap"
|
||||||
|
OpName %texSampler "texSampler"
|
||||||
|
OpName %tint_symbol "tint_symbol"
|
||||||
|
OpName %tint_symbol_3 "tint_symbol_3"
|
||||||
|
OpName %FragmentOutput "FragmentOutput"
|
||||||
|
OpMemberName %FragmentOutput 0 "color"
|
||||||
|
OpName %tint_symbol_4 "tint_symbol_4"
|
||||||
|
OpName %tint_symbol_2 "tint_symbol_2"
|
||||||
|
OpName %main "main"
|
||||||
|
OpName %FragmentInput "FragmentInput"
|
||||||
|
OpMemberName %FragmentInput 0 "vUv"
|
||||||
|
OpName %fOut "fOut"
|
||||||
|
OpDecorate %depthMap Binding 5
|
||||||
|
OpDecorate %depthMap DescriptorSet 1
|
||||||
|
OpDecorate %texSampler Binding 3
|
||||||
|
OpDecorate %texSampler DescriptorSet 1
|
||||||
|
OpDecorate %tint_symbol Location 2
|
||||||
|
OpDecorate %tint_symbol_3 Location 0
|
||||||
|
OpMemberDecorate %FragmentOutput 0 Offset 0
|
||||||
|
OpMemberDecorate %FragmentInput 0 Offset 0
|
||||||
|
%float = OpTypeFloat 32
|
||||||
|
%3 = OpTypeImage %float 2D 1 0 0 1 Unknown
|
||||||
|
%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3
|
||||||
|
%depthMap = OpVariable %_ptr_UniformConstant_3 UniformConstant
|
||||||
|
%7 = OpTypeSampler
|
||||||
|
%_ptr_UniformConstant_7 = OpTypePointer UniformConstant %7
|
||||||
|
%texSampler = OpVariable %_ptr_UniformConstant_7 UniformConstant
|
||||||
|
%v2float = OpTypeVector %float 2
|
||||||
|
%_ptr_Input_v2float = OpTypePointer Input %v2float
|
||||||
|
%tint_symbol = OpVariable %_ptr_Input_v2float Input
|
||||||
|
%v4float = OpTypeVector %float 4
|
||||||
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||||
|
%14 = OpConstantNull %v4float
|
||||||
|
%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %14
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%FragmentOutput = OpTypeStruct %v4float
|
||||||
|
%15 = OpTypeFunction %void %FragmentOutput
|
||||||
|
%22 = OpTypeFunction %void
|
||||||
|
%FragmentInput = OpTypeStruct %v2float
|
||||||
|
%32 = OpTypeSampledImage %3
|
||||||
|
%v3float = OpTypeVector %float 3
|
||||||
|
%_ptr_Function_FragmentOutput = OpTypePointer Function %FragmentOutput
|
||||||
|
%39 = OpConstantNull %FragmentOutput
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%uint_0 = OpConstant %uint 0
|
||||||
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
|
%float_1 = OpConstant %float 1
|
||||||
|
%tint_symbol_4 = OpFunction %void None %15
|
||||||
|
%tint_symbol_2 = OpFunctionParameter %FragmentOutput
|
||||||
|
%20 = OpLabel
|
||||||
|
%21 = OpCompositeExtract %v4float %tint_symbol_2 0
|
||||||
|
OpStore %tint_symbol_3 %21
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%main = OpFunction %void None %22
|
||||||
|
%24 = OpLabel
|
||||||
|
%fOut = OpVariable %_ptr_Function_FragmentOutput Function %39
|
||||||
|
%26 = OpLoad %v2float %tint_symbol
|
||||||
|
%27 = OpCompositeConstruct %FragmentInput %26
|
||||||
|
%30 = OpLoad %7 %texSampler
|
||||||
|
%31 = OpLoad %3 %depthMap
|
||||||
|
%33 = OpSampledImage %32 %31 %30
|
||||||
|
%34 = OpCompositeExtract %v2float %27 0
|
||||||
|
%29 = OpImageSampleImplicitLod %v4float %33 %34
|
||||||
|
%28 = OpCompositeExtract %float %29 0
|
||||||
|
%36 = OpCompositeConstruct %v3float %28 %28 %28
|
||||||
|
%43 = OpAccessChain %_ptr_Function_v4float %fOut %uint_0
|
||||||
|
%44 = OpCompositeExtract %float %36 0
|
||||||
|
%45 = OpCompositeExtract %float %36 1
|
||||||
|
%46 = OpCompositeExtract %float %36 2
|
||||||
|
%48 = OpCompositeConstruct %v4float %44 %45 %46 %float_1
|
||||||
|
OpStore %43 %48
|
||||||
|
%50 = OpLoad %FragmentOutput %fOut
|
||||||
|
%49 = OpFunctionCall %void %tint_symbol_4 %50
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,22 @@
|
||||||
|
struct FragmentInput {
|
||||||
|
[[location(2)]]
|
||||||
|
vUv : vec2<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct FragmentOutput {
|
||||||
|
[[location(0)]]
|
||||||
|
color : vec4<f32>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[[binding(5), group(1)]] var depthMap : texture_depth_2d;
|
||||||
|
|
||||||
|
[[binding(3), group(1)]] var texSampler : sampler;
|
||||||
|
|
||||||
|
[[stage(fragment)]]
|
||||||
|
fn main(fIn : FragmentInput) -> FragmentOutput {
|
||||||
|
let sample : f32 = textureSample(depthMap, texSampler, fIn.vUv);
|
||||||
|
let color : vec3<f32> = vec3<f32>(sample, sample, sample);
|
||||||
|
var fOut : FragmentOutput;
|
||||||
|
fOut.color = vec4<f32>(color, 1.0);
|
||||||
|
return fOut;
|
||||||
|
}
|
Loading…
Reference in New Issue