summaryrefslogtreecommitdiff
path: root/tests/vkray
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2023-09-05 23:26:59 +0800
committerGitHub <noreply@github.com>2023-09-05 23:26:59 +0800
commit2c2294d3310b24fd73cd41ec51338a736f3a2886 (patch)
tree0e02393fa772e7741eb38079a79f5cacaa1ba7b0 /tests/vkray
parent641f7bdc4ea4f75385c30d833cce4619a411ec67 (diff)
SPIR-V image operations (#3163)
* Add __truncate and __sampledType for spirv_asm Allows some texture tests to start passing * add __isVector Currently unused * Add 1-vector legalization pass (WIP) * Add capabilities for image types * neaten instruction dumping * add 1-vector test * Add a couple of cases to vec1 legalization * Remove texture tests from expected failures * comment * regenerate vs projects * Remove redundant define form synchapi emulation * refactoring image methods * All sample functions refactored * Remove incorrect glsl intrinsics Partially addresses https://github.com/shader-slang/slang/issues/3174 * __subscript image ops via writing funcs * Extract texture struct writing from core.meta.slang * Abstract out cuda intrinsic * Remvoe erroneous call to opDecorateIndex * spirv asm IR utils * Correct position of loads for SPIR-V asm inst operands * Raise constructors to global scope during spir-v legalization * Correct snippet output * Implement most texture sampling ops for SPIR-V * Legalize 1-vectors for glsl too * Make SPIR-V inst operands non-hoistable * Better 1-vector legalization * Put textures in ptrs for spirv * insert missing break * Add vec1 legalization test * Add some missing pieces to slang-ir-insts * Greatly neaten vec1 legalization * a * Neaten vec1 legalization * Add image read and write intrinsics for spir-v * Squash warnings * regenerate vs projects * Drop redundant guards * Drop 5 tests from expected failure list * Inst numbering changes to cross compile tests * vec1 legalization tests only on vk * Correct location of asm op emit * Inline constant in spirv-asm * Correct signedness for lane in wave intrinsics * Extract element from float1 for cuda * squash warnings * Neaten spirv-emit * dedupe more capabilities * warnings * neaten assert * comments * comments
Diffstat (limited to 'tests/vkray')
-rw-r--r--tests/vkray/anyhit.slang.glsl14
-rw-r--r--tests/vkray/callable.slang.glsl27
-rw-r--r--tests/vkray/raygen.slang.glsl20
3 files changed, 20 insertions, 41 deletions
diff --git a/tests/vkray/anyhit.slang.glsl b/tests/vkray/anyhit.slang.glsl
index 9d3584e1f..8255599b9 100644
--- a/tests/vkray/anyhit.slang.glsl
+++ b/tests/vkray/anyhit.slang.glsl
@@ -1,4 +1,3 @@
-// anyhit.slang.glsl
#version 460
#extension GL_EXT_ray_tracing : require
layout(row_major) uniform;
@@ -12,8 +11,7 @@ layout(binding = 0)
layout(std140) uniform _S1
{
int mode_0;
-} gParams_0;
-
+}gParams_0;
layout(binding = 1)
uniform texture2D gParams_alphaMap_0;
@@ -24,24 +22,21 @@ struct SphereHitAttributes_0
{
vec3 normal_0;
};
+
hitAttributeEXT SphereHitAttributes_0 _S2;
struct ShadowRay_0
{
vec4 hitDistance_0;
};
+
rayPayloadInEXT ShadowRay_0 _S3;
void main()
{
if(gParams_0.mode_0 != 0)
{
- float val_0 = textureLod(
- sampler2D(gParams_alphaMap_0, gParams_sampler_0),
- _S2.normal_0.xy,
- (0.0)).x;
-
- if(val_0 > 0.0)
+ if((textureLod(sampler2D(gParams_alphaMap_0,gParams_sampler_0), (_S2.normal_0.xy), (0.0)).x) > 0.0)
{
terminateRayEXT;;
}
@@ -50,7 +45,6 @@ void main()
ignoreIntersectionEXT;;
}
}
-
return;
}
diff --git a/tests/vkray/callable.slang.glsl b/tests/vkray/callable.slang.glsl
index dd99cc440..871ffcbb7 100644
--- a/tests/vkray/callable.slang.glsl
+++ b/tests/vkray/callable.slang.glsl
@@ -1,18 +1,12 @@
#version 460
-
-#if USE_NV_RT
-#extension GL_NV_ray_tracing : require
-#define callableDataInEXT callableDataInNV
-#define hitAttributeEXT hitAttributeNV
-#define ignoreIntersectionEXT ignoreIntersectionNV
-#define rayPayloadInEXT rayPayloadInNV
-#define terminateRayEXT terminateRayNV
-#else
#extension GL_EXT_ray_tracing : require
-#endif
+layout(row_major) uniform;
+layout(row_major) buffer;
+layout(binding = 0)
+uniform texture2D gAlbedoMap_0;
-layout(binding = 0) uniform texture2D gAlbedoMap_0;
-layout(binding = 1) uniform sampler gSampler_0;
+layout(binding = 1)
+uniform sampler gSampler_0;
struct MaterialPayload_0
{
@@ -24,12 +18,7 @@ callableDataInEXT MaterialPayload_0 _S1;
void main()
{
- vec4 _S2 = textureLod(
- sampler2D(gAlbedoMap_0,gSampler_0),
- _S1.uv_0,
- float(0));
-
- _S1.albedo_0 = _S2;
-
+ _S1.albedo_0 = (textureLod(sampler2D(gAlbedoMap_0,gSampler_0), (_S1.uv_0), (0.0)));
return;
}
+
diff --git a/tests/vkray/raygen.slang.glsl b/tests/vkray/raygen.slang.glsl
index 69dc74c53..80a63d5ad 100644
--- a/tests/vkray/raygen.slang.glsl
+++ b/tests/vkray/raygen.slang.glsl
@@ -10,6 +10,7 @@ uniform sampler sampler_0;
layout(binding = 1)
uniform texture2D samplerNormal_0;
+
struct Light_0
{
vec4 position_0;
@@ -95,23 +96,18 @@ void main()
uvec3 _S6 = ((gl_LaunchIDEXT));
float _S7 = float(_S6.y) + 0.5;
uvec3 _S8 = ((gl_LaunchSizeEXT));
-
vec2 inUV_0 = vec2(_S5, _S7 / float(_S8.y));
- vec4 _S9 = (texture(sampler2D(samplerPosition_0,sampler_0), (inUV_0)));
- vec3 P_0 = _S9.xyz;
- vec4 _S10 = (texture(sampler2D(samplerNormal_0,sampler_0), (inUV_0)));
- vec3 N_0 = _S10.xyz * 2.0 - 1.0;
-
+ vec3 P_0 = (texture(sampler2D(samplerPosition_0,sampler_0), (inUV_0))).xyz;
+ vec3 N_0 = (texture(sampler2D(samplerNormal_0,sampler_0), (inUV_0))).xyz * 2.0 - 1.0;
vec3 lightDelta_0 = ubo_0.light_0.position_0.xyz - P_0;
float lightDist_0 = length(lightDelta_0);
vec3 L_0 = normalize(lightDelta_0);
- float _S11 = 1.0 / (lightDist_0 * lightDist_0);
+ float _S9 = 1.0 / (lightDist_0 * lightDist_0);
RayDesc_0 ray_0;
ray_0.Origin_0 = P_0;
ray_0.TMin_0 = 0.00000099999999747524;
ray_0.Direction_0 = lightDelta_0;
ray_0.TMax_0 = lightDist_0;
-
ShadowRay_0 shadowRay_0;
shadowRay_0.hitDistance_0 = 0.0;
TraceRay_0(as_0, 1U, 255U, 0U, 0U, 2U, ray_0, shadowRay_0);
@@ -122,14 +118,14 @@ void main()
}
else
{
- atten_0 = _S11;
+ atten_0 = _S9;
}
vec3 color_2 = ubo_0.light_0.color_0.xyz * saturate_0(dot(N_0, L_0)) * atten_0;
-
ReflectionRay_0 reflectionRay_0;
TraceRay_1(as_0, 1U, 255U, 0U, 0U, 2U, ray_0, reflectionRay_0);
vec3 color_3 = color_2 + reflectionRay_0.color_1;
- uvec3 _S12 = ((gl_LaunchIDEXT));
- imageStore((outputImage_0), ivec2((uvec2(ivec2(_S12.xy)))), vec4(color_3, 1.0));
+ uvec3 _S10 = ((gl_LaunchIDEXT));
+ imageStore((outputImage_0), ivec2((uvec2(ivec2(_S10.xy)))), vec4(color_3, 1.0));
return;
}
+