MSL: Add test for passing single swizzled texture arg from array.

This commit is contained in:
Hans-Kristian Arntzen 2019-05-09 14:19:40 +02:00
parent ad95173a48
commit ac5eea3326
3 changed files with 13 additions and 0 deletions

View File

@ -145,6 +145,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant spvAux& spvAuxBuffer
main0_out out = {};
constant uint32_t* uSamplerSwzl = &spvAuxBuffer.swizzleConst[0];
out.FragColor = spvTextureSwizzle(uSampler[2].sample(uSamplerSmplr[2], in.vUV), uSamplerSwzl[2]);
out.FragColor += spvTextureSwizzle(uSampler[1].sample(uSamplerSmplr[1], in.vUV), uSamplerSwzl[1]);
return out;
}

View File

@ -145,11 +145,17 @@ float4 sample_in_func(thread const array<texture2d<float>, 4> uSampler, thread c
return spvTextureSwizzle(uSampler[2].sample(uSamplerSmplr[2], vUV), uSamplerSwzl[2]);
}
float4 sample_single_in_func(thread const texture2d<float> s, thread const sampler sSmplr, constant uint32_t& sSwzl, thread float2& vUV)
{
return spvTextureSwizzle(s.sample(sSmplr, vUV), sSwzl);
}
fragment main0_out main0(main0_in in [[stage_in]], constant spvAux& spvAuxBuffer [[buffer(30)]], array<texture2d<float>, 4> uSampler [[texture(0)]], array<sampler, 4> uSamplerSmplr [[sampler(0)]])
{
main0_out out = {};
constant uint32_t* uSamplerSwzl = &spvAuxBuffer.swizzleConst[0];
out.FragColor = sample_in_func(uSampler, uSamplerSmplr, uSamplerSwzl, in.vUV);
out.FragColor += sample_single_in_func(uSampler[1], uSamplerSmplr[1], uSamplerSwzl[1], in.vUV);
return out;
}

View File

@ -11,7 +11,13 @@ vec4 sample_in_func()
return texture(uSampler[2], vUV);
}
vec4 sample_single_in_func(sampler2D s)
{
return texture(s, vUV);
}
void main()
{
FragColor = sample_in_func();
FragColor += sample_single_in_func(uSampler[1]);
}