summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Panteleev <alpanteleev@nvidia.com>2022-04-06 19:07:30 -0700
committerGitHub <noreply@github.com>2022-04-06 19:07:30 -0700
commit86221ff4757ee504307f3537b34acb05117ce272 (patch)
tree9f8b6b86cae3cdf2307ff9d3b15feea079525a05
parent464ecb6083f64f903df19b961e2af0075bdf3111 (diff)
Fixed the mapping of the ray tracing instance functions to GLSL (#2177)
* Fixed the mapping of the *InstanceID() and *InstanceIndex() functions to GLSL. * Fixed and somewhat improved the vkray/closesthit test.
-rw-r--r--source/slang/hlsl.meta.slang14
-rw-r--r--tests/vkray/closesthit.slang2
-rw-r--r--tests/vkray/closesthit.slang.glsl6
3 files changed, 12 insertions, 10 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index d3d77b804..971efcfcc 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -4736,12 +4736,12 @@ uint RayFlags();
// 10.4.3 - Primitive/Object Space System Values
-__target_intrinsic(GL_NV_ray_tracing, "(gl_InstanceCustomIndexNV)")
-__target_intrinsic(GL_EXT_ray_tracing, "(gl_InstanceCustomIndexEXT)")
+__target_intrinsic(__glslRayTracing, "(gl_InstanceID)")
__target_intrinsic(cuda, "optixGetInstanceIndex")
uint InstanceIndex();
-__target_intrinsic(__glslRayTracing, "(gl_InstanceID)")
+__target_intrinsic(GL_NV_ray_tracing, "(gl_InstanceCustomIndexNV)")
+__target_intrinsic(GL_EXT_ray_tracing, "(gl_InstanceCustomIndexEXT)")
__target_intrinsic(cuda, "optixGetInstanceId")
uint InstanceID();
@@ -5148,12 +5148,12 @@ struct RayQuery <let rayFlags : RAY_FLAG = RAY_FLAG_NONE>
__glsl_version(460)
float4x3 CandidateWorldToObject4x3();
- __target_intrinsic(glsl, "rayQueryGetIntersectionInstanceCustomIndexEXT($0, false)")
+ __target_intrinsic(glsl, "rayQueryGetIntersectionInstanceIdEXT($0, false)")
__glsl_extension(GL_EXT_ray_query)
__glsl_version(460)
uint CandidateInstanceIndex();
- __target_intrinsic(glsl, "rayQueryGetIntersectionInstanceIdEXT($0, false)")
+ __target_intrinsic(glsl, "rayQueryGetIntersectionInstanceCustomIndexEXT($0, false)")
__glsl_extension(GL_EXT_ray_query)
__glsl_version(460)
uint CandidateInstanceID();
@@ -5255,12 +5255,12 @@ struct RayQuery <let rayFlags : RAY_FLAG = RAY_FLAG_NONE>
__glsl_version(460)
float CommittedRayT();
- __target_intrinsic(glsl, "rayQueryGetIntersectionInstanceCustomIndexEXT($0, true)")
+ __target_intrinsic(glsl, "rayQueryGetIntersectionInstanceIdEXT($0, true)")
__glsl_extension(GL_EXT_ray_query)
__glsl_version(460)
uint CommittedInstanceIndex();
- __target_intrinsic(glsl, "rayQueryGetIntersectionInstanceIdEXT($0, true)")
+ __target_intrinsic(glsl, "rayQueryGetIntersectionInstanceCustomIndexEXT($0, true)")
__glsl_extension(GL_EXT_ray_query)
__glsl_version(460)
uint CommittedInstanceID();
diff --git a/tests/vkray/closesthit.slang b/tests/vkray/closesthit.slang
index 28c759175..b1b73c94e 100644
--- a/tests/vkray/closesthit.slang
+++ b/tests/vkray/closesthit.slang
@@ -18,7 +18,7 @@ void main(
BuiltInTriangleIntersectionAttributes attributes,
in out ReflectionRay ioPayload)
{
- uint materialID = InstanceIndex()
+ uint materialID = (InstanceIndex() << 1)
+ InstanceID()
+ PrimitiveIndex()
+ HitKind()
diff --git a/tests/vkray/closesthit.slang.glsl b/tests/vkray/closesthit.slang.glsl
index e3af26a04..b5daef909 100644
--- a/tests/vkray/closesthit.slang.glsl
+++ b/tests/vkray/closesthit.slang.glsl
@@ -48,10 +48,12 @@ rayPayloadInNV ReflectionRay_0 tmp_payload;
void main()
{
- uint tmp_customidx = gl_InstanceCustomIndexNV;
uint tmp_instanceid = gl_InstanceID;
+ uint tmp_shift_0 = tmp_instanceid << 1;
+
+ uint tmp_customidx = gl_InstanceCustomIndexNV;
- uint tmp_add_0 = tmp_customidx + tmp_instanceid;
+ uint tmp_add_0 = tmp_shift_0 + tmp_customidx;
uint tmp_primid = gl_PrimitiveID;
uint tmp_add_1 = tmp_add_0 + tmp_primid;