From 5569b4850dabbb7dbcb72278bb2918c281e0d475 Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Tue, 11 Jul 2023 03:06:40 +0800 Subject: Add glsl intrinsic for SampleCmpLevelZero with offset and correct existing intrinsic (#2975) * Correct glsl intrinsic for SampleCmpLevelZero without offset * Add glsl intrinsic for SampleCmpLevelZero with offset * Add test for samplecmplevelzero glsl translation --------- Co-authored-by: Yong He --- source/slang/core.meta.slang | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source') diff --git a/source/slang/core.meta.slang b/source/slang/core.meta.slang index d99b241c0..5342800be 100644 --- a/source/slang/core.meta.slang +++ b/source/slang/core.meta.slang @@ -1944,7 +1944,7 @@ struct TextureTypeInfo sb << "float" << base.coordCount + isArray << " location, "; sb << "float compareValue"; sb << ");\n"; - sb << "__target_intrinsic(glsl, \"texture($p, vec" << arrCoordCount + 1 << "($2, $3))\")"; + sb << "__target_intrinsic(glsl, \"textureLod($p, vec" << arrCoordCount + 1 << "($2, $3), 0)\")"; if (isReadOnly) sb << "[__readNone]\n"; sb << "float SampleCmpLevelZero(SamplerComparisonState s, "; @@ -2001,6 +2001,7 @@ struct TextureTypeInfo // saying they only exclude `offset` for cube maps (which makes // sense). I'm going to assume the documentation for `SampleCmp` // is just wrong. + sb << "__target_intrinsic(glsl, \"textureOffset($p, vec" << arrCoordCount + 1 << "($2, $3), $4)\")"; if (isReadOnly) sb << "[__readNone]\n"; sb << "float SampleCmp(SamplerComparisonState s, "; @@ -2008,6 +2009,7 @@ struct TextureTypeInfo sb << "float compareValue, "; sb << "constexpr int" << base.coordCount << " offset);\n"; + sb << "__target_intrinsic(glsl, \"textureLodOffset($p, vec" << arrCoordCount + 1 << "($2, $3), 0, $4)\")"; if (isReadOnly) sb << "[__readNone]\n"; sb << "float SampleCmpLevelZero(SamplerComparisonState s, "; -- cgit v1.2.3