Fix debug info file and source strings

The file and source text was not being set correctly in the test output.
This change makes the test fixture consistent with the command line
behavior, "-gVS", which was my original intent when I added these tests.
This commit is contained in:
Jeremy Hayes 2023-10-24 13:07:31 -06:00 committed by arcady-lunarg
parent b0df68c490
commit bf08e1db5c
12 changed files with 2155 additions and 1268 deletions

View file

@ -13,7 +13,7 @@ spv.debuginfo.bufferref.glsl.frag
MemoryModel PhysicalStorageBuffer64EXT GLSL450 MemoryModel PhysicalStorageBuffer64EXT GLSL450
EntryPoint Fragment 14 "main" 76 131 EntryPoint Fragment 14 "main" 76 131
ExecutionMode 14 OriginUpperLeft ExecutionMode 14 OriginUpperLeft
2: String "" 2: String "spv.debuginfo.bufferref.glsl.frag"
8: String "uint" 8: String "uint"
16: String "main" 16: String "main"
19: String "// OpModuleProcessed auto-map-locations 19: String "// OpModuleProcessed auto-map-locations
@ -23,6 +23,34 @@ spv.debuginfo.bufferref.glsl.frag
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
#version 450 core
#extension GL_EXT_buffer_reference : enable
layout(buffer_reference, std430) buffer MeshVertexPositions {
float data[];
};
struct Mesh {
MeshVertexPositions positions;
};
layout(set = 0, binding = 0) readonly buffer PerPass_meshes {
Mesh data[];
} perPass_meshes;
layout(location = 0) out vec4 out_fragColor;
layout(location = 0) in flat uint tri_idx0;
void main() {
Mesh meshData = perPass_meshes.data[tri_idx0];
vec3 vertex_pos0 = vec3(meshData.positions.data[3 * tri_idx0],
meshData.positions.data[3 * tri_idx0 + 1],
meshData.positions.data[3 * tri_idx0 + 2]);
out_fragColor = vec4(vertex_pos0, 1.0);
}
" "
31: String "Mesh" 31: String "Mesh"
34: String "float" 34: String "float"

View file

@ -10,7 +10,7 @@ spv.debuginfo.const_params.glsl.comp
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint GLCompute 14 "main" EntryPoint GLCompute 14 "main"
ExecutionMode 14 LocalSize 1 1 1 ExecutionMode 14 LocalSize 1 1 1
2: String "" 2: String "spv.debuginfo.const_params.glsl.comp"
8: String "uint" 8: String "uint"
17: String "float" 17: String "float"
35: String "function" 35: String "function"
@ -21,6 +21,20 @@ spv.debuginfo.const_params.glsl.comp
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
#version 450
void function(
const float f,
const vec2 f2,
const vec3 f3,
const vec4 f4)
{
}
void main()
{
function(0, vec2(0), vec3(0), vec4(0));
}
" "
43: String "f" 43: String "f"
49: String "f2" 49: String "f2"

File diff suppressed because it is too large Load diff

View file

@ -12,7 +12,7 @@ Validation failed
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 14 "main" 493 546 EntryPoint Fragment 14 "main" 493 546
ExecutionMode 14 OriginUpperLeft ExecutionMode 14 OriginUpperLeft
2: String "" 2: String "spv.debuginfo.glsl.frag"
8: String "uint" 8: String "uint"
17: String "float" 17: String "float"
39: String "textureProj" 39: String "textureProj"
@ -23,6 +23,200 @@ Validation failed
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
/*
The MIT License (MIT)
Copyright (c) 2022 Sascha Willems
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#version 450
layout (binding = 1) uniform sampler2D samplerposition;
layout (binding = 2) uniform sampler2D samplerNormal;
layout (binding = 3) uniform sampler2D samplerAlbedo;
layout (binding = 5) uniform sampler2DArray samplerShadowMap;
layout (location = 0) in vec2 inUV;
layout (location = 0) out vec4 outFragColor;
#define LIGHT_COUNT 3
#define SHADOW_FACTOR 0.25
#define AMBIENT_LIGHT 0.1
#define USE_PCF
int global_var = 0;
struct Light
{
vec4 position;
vec4 target;
vec4 color;
mat4 viewMatrix;
};
layout (binding = 4) uniform UBO
{
vec4 viewPos;
Light lights[LIGHT_COUNT];
int useShadows;
int debugDisplayTarget;
} ubo;
float textureProj(vec4 P, float layer, vec2 offset)
{
float shadow = 1.0;
vec4 shadowCoord = P / P.w;
shadowCoord.st = shadowCoord.st * 0.5 + 0.5;
if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0)
{
float dist = texture(samplerShadowMap, vec3(shadowCoord.st + offset, layer)).r;
if (shadowCoord.w > 0.0 && dist < shadowCoord.z)
{
shadow = SHADOW_FACTOR;
}
}
return shadow;
}
float filterPCF(vec4 sc, float layer)
{
ivec2 texDim = textureSize(samplerShadowMap, 0).xy;
float scale = 1.5;
float dx = scale * 1.0 / float(texDim.x);
float dy = scale * 1.0 / float(texDim.y);
float shadowFactor = 0.0;
int count = 0;
int range = 1;
for (int x = -range; x <= range; x++)
{
for (int y = -range; y <= range; y++)
{
shadowFactor += textureProj(sc, layer, vec2(dx*x, dy*y));
count++;
}
}
return shadowFactor / count;
}
vec3 shadow(vec3 fragcolor, vec3 fragpos) {
for(int i = 0; i < LIGHT_COUNT; ++i)
{
vec4 shadowClip = ubo.lights[i].viewMatrix * vec4(fragpos, 1.0);
float shadowFactor;
#ifdef USE_PCF
shadowFactor= filterPCF(shadowClip, i);
#else
shadowFactor = textureProj(shadowClip, i, vec2(0.0));
#endif
fragcolor *= shadowFactor;
}
return fragcolor;
}
void main()
{
// Get G-Buffer values
vec3 fragPos = texture(samplerposition, inUV).rgb;
vec3 normal = texture(samplerNormal, inUV).rgb;
vec4 albedo = texture(samplerAlbedo, inUV);
// Debug display
if (ubo.debugDisplayTarget > 0) {
switch (ubo.debugDisplayTarget) {
case 1:
outFragColor.rgb = shadow(vec3(1.0), fragPos).rgb;
break;
case 2:
outFragColor.rgb = fragPos;
break;
case 3:
outFragColor.rgb = normal;
break;
case 4:
outFragColor.rgb = albedo.rgb;
break;
case 5:
outFragColor.rgb = albedo.aaa;
break;
}
outFragColor.a = 1.0;
return;
}
// Ambient part
vec3 fragcolor = albedo.rgb * AMBIENT_LIGHT;
vec3 N = normalize(normal);
for(int i = 0; i < LIGHT_COUNT; ++i)
{
// Vector to light
vec3 L = ubo.lights[i].position.xyz - fragPos;
// Distance from light to fragment position
float dist = length(L);
L = normalize(L);
// Viewer to fragment
vec3 V = ubo.viewPos.xyz - fragPos;
V = normalize(V);
float lightCosInnerAngle = cos(radians(15.0));
float lightCosOuterAngle = cos(radians(25.0));
float lightRange = 100.0;
// Direction vector from source to target
vec3 dir = normalize(ubo.lights[i].position.xyz - ubo.lights[i].target.xyz);
// Dual cone spot light with smooth transition between inner and outer angle
float cosDir = dot(L, dir);
float spotEffect = smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir);
float heightAttenuation = smoothstep(lightRange, 0.0f, dist);
// Diffuse lighting
float NdotL = max(0.0, dot(N, L));
vec3 diff = vec3(NdotL);
// Specular lighting
vec3 R = reflect(-L, N);
float NdotR = max(0.0, dot(R, V));
vec3 spec = vec3(pow(NdotR, 16.0) * albedo.a * 2.5);
fragcolor += vec3((diff + spec) * spotEffect * heightAttenuation) * ubo.lights[i].color.rgb * albedo.rgb;
}
// Shadow calculations in a separate pass
if (ubo.useShadows > 0)
{
fragcolor = shadow(fragcolor, fragPos);
}
outFragColor = vec4(fragcolor, 1.0);
}
" "
47: String "P" 47: String "P"
53: String "layer" 53: String "layer"

View file

@ -1,7 +1,7 @@
spv.debuginfo.glsl.geom spv.debuginfo.glsl.geom
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 8000b // Generated by (magic number): 8000b
// Id's are bound by 273 // Id's are bound by 274
Capability Geometry Capability Geometry
Capability MultiViewport Capability MultiViewport
@ -9,12 +9,12 @@ spv.debuginfo.glsl.geom
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
3: ExtInstImport "GLSL.std.450" 3: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 14 "main" 64 98 121 130 134 168 208 217 236 249 255 259 EntryPoint Geometry 14 "main" 64 98 121 130 134 168 208 217 236 250 256 260
ExecutionMode 14 Triangles ExecutionMode 14 Triangles
ExecutionMode 14 Invocations 2 ExecutionMode 14 Invocations 2
ExecutionMode 14 OutputTriangleStrip ExecutionMode 14 OutputTriangleStrip
ExecutionMode 14 OutputVertices 3 ExecutionMode 14 OutputVertices 3
2: String "" 2: String "spv.debuginfo.glsl.geom"
8: String "uint" 8: String "uint"
16: String "main" 16: String "main"
19: String "// OpModuleProcessed auto-map-locations 19: String "// OpModuleProcessed auto-map-locations
@ -24,6 +24,75 @@ spv.debuginfo.glsl.geom
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
/*
The MIT License (MIT)
Copyright (c) 2022 Sascha Willems
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#version 450
#extension GL_ARB_viewport_array : enable
layout (triangles, invocations = 2) in;
layout (triangle_strip, max_vertices = 3) out;
layout (binding = 0) uniform UBO
{
mat4 projection[2];
mat4 modelview[2];
vec4 lightPos;
} ubo;
layout (location = 0) in vec3 inNormal[];
layout (location = 1) in vec3 inColor[];
layout (location = 0) out vec3 outNormal;
layout (location = 1) out vec3 outColor;
layout (location = 2) out vec3 outViewVec;
layout (location = 3) out vec3 outLightVec;
void main(void)
{
for(int i = 0; i < gl_in.length(); i++)
{
outNormal = mat3(ubo.modelview[gl_InvocationID]) * inNormal[i];
outColor = inColor[i];
vec4 pos = gl_in[i].gl_Position;
vec4 worldPos = (ubo.modelview[gl_InvocationID] * pos);
vec3 lPos = vec3(ubo.modelview[gl_InvocationID] * ubo.lightPos);
outLightVec = lPos - worldPos.xyz;
outViewVec = -worldPos.xyz;
gl_Position = ubo.projection[gl_InvocationID] * worldPos;
// Set the viewport index that the vertex will be emitted to
gl_ViewportIndex = gl_InvocationID;
gl_PrimitiveID = gl_PrimitiveIDIn;
EmitVertex();
}
EndPrimitive();
}
" "
29: String "int" 29: String "int"
36: String "i" 36: String "i"
@ -49,9 +118,10 @@ spv.debuginfo.glsl.geom
191: String "lPos" 191: String "lPos"
210: String "outLightVec" 210: String "outLightVec"
219: String "outViewVec" 219: String "outViewVec"
251: String "gl_ViewportIndex" 238: String ""
257: String "gl_PrimitiveID" 252: String "gl_ViewportIndex"
261: String "gl_PrimitiveIDIn" 258: String "gl_PrimitiveID"
262: String "gl_PrimitiveIDIn"
SourceExtension "GL_ARB_viewport_array" SourceExtension "GL_ARB_viewport_array"
Name 14 "main" Name 14 "main"
Name 34 "i" Name 34 "i"
@ -82,9 +152,9 @@ spv.debuginfo.glsl.geom
MemberName 225(gl_PerVertex) 2 "gl_ClipDistance" MemberName 225(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 225(gl_PerVertex) 3 "gl_CullDistance" MemberName 225(gl_PerVertex) 3 "gl_CullDistance"
Name 236 "" Name 236 ""
Name 249 "gl_ViewportIndex" Name 250 "gl_ViewportIndex"
Name 255 "gl_PrimitiveID" Name 256 "gl_PrimitiveID"
Name 259 "gl_PrimitiveIDIn" Name 260 "gl_PrimitiveIDIn"
Decorate 64(outNormal) Location 0 Decorate 64(outNormal) Location 0
Decorate 74 ArrayStride 64 Decorate 74 ArrayStride 64
Decorate 76 ArrayStride 64 Decorate 76 ArrayStride 64
@ -114,9 +184,9 @@ spv.debuginfo.glsl.geom
MemberDecorate 225(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 225(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 225(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 225(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 225(gl_PerVertex) Block Decorate 225(gl_PerVertex) Block
Decorate 249(gl_ViewportIndex) BuiltIn ViewportIndex Decorate 250(gl_ViewportIndex) BuiltIn ViewportIndex
Decorate 255(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 256(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 259(gl_PrimitiveIDIn) BuiltIn PrimitiveId Decorate 260(gl_PrimitiveIDIn) BuiltIn PrimitiveId
4: TypeVoid 4: TypeVoid
5: TypeFunction 4 5: TypeFunction 4
7: TypeInt 32 0 7: TypeInt 32 0
@ -248,21 +318,21 @@ spv.debuginfo.glsl.geom
234: TypePointer Output 225(gl_PerVertex) 234: TypePointer Output 225(gl_PerVertex)
235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 232 13 12 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 232 13 12
236: 234(ptr) Variable Output 236: 234(ptr) Variable Output
237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 232 18 233 12 21 2 236 68 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 238 232 18 233 12 21 238 236 68
244: TypePointer Output 69(fvec4) 245: TypePointer Output 69(fvec4)
245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 13 12 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 13 12
247: TypePointer Output 28(int) 248: TypePointer Output 28(int)
248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 13 12 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 13 12
249(gl_ViewportIndex): 247(ptr) Variable Output 250(gl_ViewportIndex): 248(ptr) Variable Output
252: 7(int) Constant 64 253: 7(int) Constant 64
250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 251 30 18 252 12 21 251 249(gl_ViewportIndex) 68 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 252 30 18 253 12 21 252 250(gl_ViewportIndex) 68
255(gl_PrimitiveID): 247(ptr) Variable Output 256(gl_PrimitiveID): 248(ptr) Variable Output
258: 7(int) Constant 65 259: 7(int) Constant 65
256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 30 18 258 12 21 257 255(gl_PrimitiveID) 68 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 30 18 259 12 21 258 256(gl_PrimitiveID) 68
259(gl_PrimitiveIDIn): 96(ptr) Variable Input 260(gl_PrimitiveIDIn): 96(ptr) Variable Input
260: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 30 18 258 12 21 261 259(gl_PrimitiveIDIn) 68 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 262 30 18 259 12 21 262 260(gl_PrimitiveIDIn) 68
265: 7(int) Constant 66 266: 7(int) Constant 66
272: 7(int) Constant 68 273: 7(int) Constant 68
14(main): 4 Function None 5 14(main): 4 Function None 5
15: Label 15: Label
34(i): 31(ptr) Variable Function 34(i): 31(ptr) Variable Function
@ -348,33 +418,33 @@ spv.debuginfo.glsl.geom
223: 60(fvec3) VectorShuffle 221 221 0 1 2 223: 60(fvec3) VectorShuffle 221 221 0 1 2
224: 60(fvec3) FNegate 223 224: 60(fvec3) FNegate 223
Store 217(outViewVec) 224 Store 217(outViewVec) 224
239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 233 233 12 12 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 233 233 12 12
238: 28(int) Load 98(gl_InvocationID) 239: 28(int) Load 98(gl_InvocationID)
240: 104(ptr) AccessChain 92(ubo) 41 238 241: 104(ptr) AccessChain 92(ubo) 41 239
241: 71 Load 240 242: 71 Load 241
242: 69(fvec4) Load 176(worldPos) 243: 69(fvec4) Load 176(worldPos)
243: 69(fvec4) MatrixTimesVector 241 242 244: 69(fvec4) MatrixTimesVector 242 243
246: 244(ptr) AccessChain 236 41 247: 245(ptr) AccessChain 236 41
Store 246 243 Store 247 244
254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 252 252 12 12 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 253 253 12 12
253: 28(int) Load 98(gl_InvocationID) 254: 28(int) Load 98(gl_InvocationID)
Store 249(gl_ViewportIndex) 253 Store 250(gl_ViewportIndex) 254
263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 258 258 12 12 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 259 259 12 12
262: 28(int) Load 259(gl_PrimitiveIDIn) 263: 28(int) Load 260(gl_PrimitiveIDIn)
Store 255(gl_PrimitiveID) 262 Store 256(gl_PrimitiveID) 263
264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 265 265 12 12 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 266 266 12 12
EmitVertex EmitVertex
Branch 45 Branch 45
45: Label 45: Label
267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12
266: 28(int) Load 34(i) 267: 28(int) Load 34(i)
269: 28(int) IAdd 266 95 270: 28(int) IAdd 267 95
Store 34(i) 269 Store 34(i) 270
Branch 42 Branch 42
44: Label 44: Label
270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 272 272 12 12 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 273 273 12 12
EndPrimitive EndPrimitive
Return Return
FunctionEnd FunctionEnd

View file

@ -10,7 +10,7 @@ spv.debuginfo.glsl.tesc
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 14 "main" 260 265 294 383 399 516 532 542 557 EntryPoint TessellationControl 14 "main" 260 265 294 383 399 516 532 542 557
ExecutionMode 14 OutputVertices 4 ExecutionMode 14 OutputVertices 4
2: String "" 2: String "spv.debuginfo.glsl.tesc"
8: String "uint" 8: String "uint"
17: String "float" 17: String "float"
31: String "screenSpaceTessFactor" 31: String "screenSpaceTessFactor"
@ -21,6 +21,146 @@ spv.debuginfo.glsl.tesc
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
/*
The MIT License (MIT)
Copyright (c) 2022 Sascha Willems
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#version 450
layout(set = 0, binding = 0) uniform UBO
{
mat4 projection;
mat4 modelview;
vec4 lightPos;
vec4 frustumPlanes[6];
float displacementFactor;
float tessellationFactor;
vec2 viewportDim;
float tessellatedEdgeSize;
} ubo;
layout(set = 0, binding = 1) uniform sampler2D samplerHeight;
layout (vertices = 4) out;
layout (location = 0) in vec3 inNormal[];
layout (location = 1) in vec2 inUV[];
layout (location = 0) out vec3 outNormal[4];
layout (location = 1) out vec2 outUV[4];
// Calculate the tessellation factor based on screen space
// dimensions of the edge
float screenSpaceTessFactor(vec4 p0, vec4 p1)
{
// Calculate edge mid point
vec4 midPoint = 0.5 * (p0 + p1);
// Sphere radius as distance between the control points
float radius = distance(p0, p1) / 2.0;
// View space
vec4 v0 = ubo.modelview * midPoint;
// Project into clip space
vec4 clip0 = (ubo.projection * (v0 - vec4(radius, vec3(0.0))));
vec4 clip1 = (ubo.projection * (v0 + vec4(radius, vec3(0.0))));
// Get normalized device coordinates
clip0 /= clip0.w;
clip1 /= clip1.w;
// Convert to viewport coordinates
clip0.xy *= ubo.viewportDim;
clip1.xy *= ubo.viewportDim;
// Return the tessellation factor based on the screen size
// given by the distance of the two edge control points in screen space
// and a reference (min.) tessellation size for the edge set by the application
return clamp(distance(clip0, clip1) / ubo.tessellatedEdgeSize * ubo.tessellationFactor, 1.0, 64.0);
}
// Checks the current's patch visibility against the frustum using a sphere check
// Sphere radius is given by the patch size
bool frustumCheck()
{
// Fixed radius (increase if patch size is increased in example)
const float radius = 8.0f;
vec4 pos = gl_in[gl_InvocationID].gl_Position;
pos.y -= textureLod(samplerHeight, inUV[0], 0.0).r * ubo.displacementFactor;
// Check sphere against frustum planes
for (int i = 0; i < 6; i++) {
if (dot(pos, ubo.frustumPlanes[i]) + radius < 0.0)
{
return false;
}
}
return true;
}
void main()
{
if (gl_InvocationID == 0)
{
if (!frustumCheck())
{
gl_TessLevelInner[0] = 0.0;
gl_TessLevelInner[1] = 0.0;
gl_TessLevelOuter[0] = 0.0;
gl_TessLevelOuter[1] = 0.0;
gl_TessLevelOuter[2] = 0.0;
gl_TessLevelOuter[3] = 0.0;
}
else
{
if (ubo.tessellationFactor > 0.0)
{
gl_TessLevelOuter[0] = screenSpaceTessFactor(gl_in[3].gl_Position, gl_in[0].gl_Position);
gl_TessLevelOuter[1] = screenSpaceTessFactor(gl_in[0].gl_Position, gl_in[1].gl_Position);
gl_TessLevelOuter[2] = screenSpaceTessFactor(gl_in[1].gl_Position, gl_in[2].gl_Position);
gl_TessLevelOuter[3] = screenSpaceTessFactor(gl_in[2].gl_Position, gl_in[3].gl_Position);
gl_TessLevelInner[0] = mix(gl_TessLevelOuter[0], gl_TessLevelOuter[3], 0.5);
gl_TessLevelInner[1] = mix(gl_TessLevelOuter[2], gl_TessLevelOuter[1], 0.5);
}
else
{
// Tessellation factor can be set to zero by example
// to demonstrate a simple passthrough
gl_TessLevelInner[0] = 1.0;
gl_TessLevelInner[1] = 1.0;
gl_TessLevelOuter[0] = 1.0;
gl_TessLevelOuter[1] = 1.0;
gl_TessLevelOuter[2] = 1.0;
gl_TessLevelOuter[3] = 1.0;
}
}
}
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
outNormal[gl_InvocationID] = inNormal[gl_InvocationID];
outUV[gl_InvocationID] = inUV[gl_InvocationID];
}
" "
40: String "p0" 40: String "p0"
46: String "p1" 46: String "p1"

View file

@ -1,18 +1,18 @@
spv.debuginfo.glsl.tese spv.debuginfo.glsl.tese
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 8000b // Generated by (magic number): 8000b
// Id's are bound by 356 // Id's are bound by 357
Capability Tessellation Capability Tessellation
Extension "SPV_KHR_non_semantic_info" Extension "SPV_KHR_non_semantic_info"
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
3: ExtInstImport "GLSL.std.450" 3: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 14 "main" 47 66 93 116 143 183 300 315 323 336 343 EntryPoint TessellationEvaluation 14 "main" 47 66 93 116 143 183 300 316 324 337 344
ExecutionMode 14 Quads ExecutionMode 14 Quads
ExecutionMode 14 SpacingEqual ExecutionMode 14 SpacingEqual
ExecutionMode 14 VertexOrderCw ExecutionMode 14 VertexOrderCw
2: String "" 2: String "spv.debuginfo.glsl.tese"
8: String "uint" 8: String "uint"
16: String "main" 16: String "main"
19: String "// OpModuleProcessed auto-map-locations 19: String "// OpModuleProcessed auto-map-locations
@ -22,6 +22,84 @@ spv.debuginfo.glsl.tese
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
/*
The MIT License (MIT)
Copyright (c) 2022 Sascha Willems
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#version 450
layout (set = 0, binding = 0) uniform UBO
{
mat4 projection;
mat4 modelview;
vec4 lightPos;
vec4 frustumPlanes[6];
float displacementFactor;
float tessellationFactor;
vec2 viewportDim;
float tessellatedEdgeSize;
} ubo;
layout (set = 0, binding = 1) uniform sampler2D displacementMap;
layout(quads, equal_spacing, cw) in;
layout (location = 0) in vec3 inNormal[];
layout (location = 1) in vec2 inUV[];
layout (location = 0) out vec3 outNormal;
layout (location = 1) out vec2 outUV;
layout (location = 2) out vec3 outViewVec;
layout (location = 3) out vec3 outLightVec;
layout (location = 4) out vec3 outEyePos;
layout (location = 5) out vec3 outWorldPos;
void main()
{
// Interpolate UV coordinates
vec2 uv1 = mix(inUV[0], inUV[1], gl_TessCoord.x);
vec2 uv2 = mix(inUV[3], inUV[2], gl_TessCoord.x);
outUV = mix(uv1, uv2, gl_TessCoord.y);
vec3 n1 = mix(inNormal[0], inNormal[1], gl_TessCoord.x);
vec3 n2 = mix(inNormal[3], inNormal[2], gl_TessCoord.x);
outNormal = mix(n1, n2, gl_TessCoord.y);
// Interpolate positions
vec4 pos1 = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);
vec4 pos2 = mix(gl_in[3].gl_Position, gl_in[2].gl_Position, gl_TessCoord.x);
vec4 pos = mix(pos1, pos2, gl_TessCoord.y);
// Displace
pos.y -= textureLod(displacementMap, outUV, 0.0).r * ubo.displacementFactor;
// Perspective projection
gl_Position = ubo.projection * ubo.modelview * pos;
// Calculate vectors for lighting based on tessellated position
outViewVec = -pos.xyz;
outLightVec = normalize(ubo.lightPos.xyz + outViewVec);
outWorldPos = pos.xyz;
outEyePos = vec3(ubo.modelview * pos);
}
" "
29: String "float" 29: String "float"
38: String "uv1" 38: String "uv1"
@ -55,10 +133,11 @@ spv.debuginfo.glsl.tese
266: String "viewportDim" 266: String "viewportDim"
270: String "UBO" 270: String "UBO"
275: String "ubo" 275: String "ubo"
317: String "outViewVec" 302: String ""
325: String "outLightVec" 318: String "outViewVec"
338: String "outWorldPos" 326: String "outLightVec"
345: String "outEyePos" 339: String "outWorldPos"
346: String "outEyePos"
Name 14 "main" Name 14 "main"
Name 36 "uv1" Name 36 "uv1"
Name 47 "inUV" Name 47 "inUV"
@ -95,10 +174,10 @@ spv.debuginfo.glsl.tese
MemberName 288(gl_PerVertex) 2 "gl_ClipDistance" MemberName 288(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 288(gl_PerVertex) 3 "gl_CullDistance" MemberName 288(gl_PerVertex) 3 "gl_CullDistance"
Name 300 "" Name 300 ""
Name 315 "outViewVec" Name 316 "outViewVec"
Name 323 "outLightVec" Name 324 "outLightVec"
Name 336 "outWorldPos" Name 337 "outWorldPos"
Name 343 "outEyePos" Name 344 "outEyePos"
Decorate 47(inUV) Location 1 Decorate 47(inUV) Location 1
Decorate 66(gl_TessCoord) BuiltIn TessCoord Decorate 66(gl_TessCoord) BuiltIn TessCoord
Decorate 93(outUV) Location 1 Decorate 93(outUV) Location 1
@ -132,10 +211,10 @@ spv.debuginfo.glsl.tese
MemberDecorate 288(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 288(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 288(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 288(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 288(gl_PerVertex) Block Decorate 288(gl_PerVertex) Block
Decorate 315(outViewVec) Location 2 Decorate 316(outViewVec) Location 2
Decorate 323(outLightVec) Location 3 Decorate 324(outLightVec) Location 3
Decorate 336(outWorldPos) Location 5 Decorate 337(outWorldPos) Location 5
Decorate 343(outEyePos) Location 4 Decorate 344(outEyePos) Location 4
4: TypeVoid 4: TypeVoid
5: TypeFunction 4 5: TypeFunction 4
7: TypeInt 32 0 7: TypeInt 32 0
@ -292,25 +371,25 @@ spv.debuginfo.glsl.tese
298: TypePointer Output 288(gl_PerVertex) 298: TypePointer Output 288(gl_PerVertex)
299: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 296 13 12 299: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 296 13 12
300: 298(ptr) Variable Output 300: 298(ptr) Variable Output
301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 296 18 297 12 21 2 300 50 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 302 296 18 297 12 21 302 300 50
302: TypePointer Uniform 243 303: TypePointer Uniform 243
303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 244 24 12 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 244 24 12
312: TypePointer Output 154(fvec4) 313: TypePointer Output 154(fvec4)
313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 13 12 314: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 13 12
315(outViewVec): 141(ptr) Variable Output 316(outViewVec): 141(ptr) Variable Output
318: 7(int) Constant 74 319: 7(int) Constant 74
316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 317 63 18 318 12 21 317 315(outViewVec) 50 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 318 63 18 319 12 21 318 316(outViewVec) 50
323(outLightVec): 141(ptr) Variable Output 324(outLightVec): 141(ptr) Variable Output
326: 7(int) Constant 75 327: 7(int) Constant 75
324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 325 63 18 326 12 21 325 323(outLightVec) 50 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 326 63 18 327 12 21 326 324(outLightVec) 50
327: TypePointer Uniform 154(fvec4) 328: TypePointer Uniform 154(fvec4)
328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 24 12 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 24 12
336(outWorldPos): 141(ptr) Variable Output 337(outWorldPos): 141(ptr) Variable Output
339: 7(int) Constant 76 340: 7(int) Constant 76
337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 338 63 18 339 12 21 338 336(outWorldPos) 50 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 339 63 18 340 12 21 339 337(outWorldPos) 50
343(outEyePos): 141(ptr) Variable Output 344(outEyePos): 141(ptr) Variable Output
346: 7(int) Constant 77 347: 7(int) Constant 77
344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 345 63 18 346 12 21 345 343(outEyePos) 50 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 346 63 18 347 12 21 346 344(outEyePos) 50
14(main): 4 Function None 5 14(main): 4 Function None 5
15: Label 15: Label
36(uv1): 33(ptr) Variable Function 36(uv1): 33(ptr) Variable Function
@ -427,42 +506,42 @@ spv.debuginfo.glsl.tese
286: 28(float) FSub 285 281 286: 28(float) FSub 285 281
287: 282(ptr) AccessChain 210(pos) 22 287: 282(ptr) AccessChain 210(pos) 22
Store 287 286 Store 287 286
305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12
304: 302(ptr) AccessChain 273(ubo) 54 305: 303(ptr) AccessChain 273(ubo) 54
306: 243 Load 304 307: 243 Load 305
307: 302(ptr) AccessChain 273(ubo) 59 308: 303(ptr) AccessChain 273(ubo) 59
308: 243 Load 307 309: 243 Load 308
309: 243 MatrixTimesMatrix 306 308 310: 243 MatrixTimesMatrix 307 309
310: 154(fvec4) Load 210(pos) 311: 154(fvec4) Load 210(pos)
311: 154(fvec4) MatrixTimesVector 309 310 312: 154(fvec4) MatrixTimesVector 310 311
314: 312(ptr) AccessChain 300 54 315: 313(ptr) AccessChain 300 54
Store 314 311 Store 315 312
320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 318 318 12 12 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 319 319 12 12
319: 154(fvec4) Load 210(pos) 320: 154(fvec4) Load 210(pos)
321: 62(fvec3) VectorShuffle 319 319 0 1 2 322: 62(fvec3) VectorShuffle 320 320 0 1 2
322: 62(fvec3) FNegate 321 323: 62(fvec3) FNegate 322
Store 315(outViewVec) 322 Store 316(outViewVec) 323
330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 326 326 12 12 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 327 327 12 12
329: 327(ptr) AccessChain 273(ubo) 84 330: 328(ptr) AccessChain 273(ubo) 84
331: 154(fvec4) Load 329 332: 154(fvec4) Load 330
332: 62(fvec3) VectorShuffle 331 331 0 1 2 333: 62(fvec3) VectorShuffle 332 332 0 1 2
333: 62(fvec3) Load 315(outViewVec) 334: 62(fvec3) Load 316(outViewVec)
334: 62(fvec3) FAdd 332 333 335: 62(fvec3) FAdd 333 334
335: 62(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 334 336: 62(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 335
Store 323(outLightVec) 335 Store 324(outLightVec) 336
341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 339 339 12 12 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 340 340 12 12
340: 154(fvec4) Load 210(pos) 341: 154(fvec4) Load 210(pos)
342: 62(fvec3) VectorShuffle 340 340 0 1 2 343: 62(fvec3) VectorShuffle 341 341 0 1 2
Store 336(outWorldPos) 342 Store 337(outWorldPos) 343
348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 346 346 12 12 349: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 347 347 12 12
347: 302(ptr) AccessChain 273(ubo) 59 348: 303(ptr) AccessChain 273(ubo) 59
349: 243 Load 347 350: 243 Load 348
350: 154(fvec4) Load 210(pos) 351: 154(fvec4) Load 210(pos)
351: 154(fvec4) MatrixTimesVector 349 350 352: 154(fvec4) MatrixTimesVector 350 351
352: 28(float) CompositeExtract 351 0 353: 28(float) CompositeExtract 352 0
353: 28(float) CompositeExtract 351 1 354: 28(float) CompositeExtract 352 1
354: 28(float) CompositeExtract 351 2 355: 28(float) CompositeExtract 352 2
355: 62(fvec3) CompositeConstruct 352 353 354 356: 62(fvec3) CompositeConstruct 353 354 355
Store 343(outEyePos) 355 Store 344(outEyePos) 356
Return Return
FunctionEnd FunctionEnd

View file

@ -1,15 +1,15 @@
spv.debuginfo.glsl.vert spv.debuginfo.glsl.vert
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 8000b // Generated by (magic number): 8000b
// Id's are bound by 444 // Id's are bound by 445
Capability Shader Capability Shader
Extension "SPV_KHR_non_semantic_info" Extension "SPV_KHR_non_semantic_info"
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
3: ExtInstImport "GLSL.std.450" 3: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 14 "main" 35 42 47 55 65 83 305 323 328 353 370 389 427 436 EntryPoint Vertex 14 "main" 35 42 47 55 65 83 305 323 328 353 371 390 428 437
2: String "" 2: String "spv.debuginfo.glsl.vert"
8: String "uint" 8: String "uint"
16: String "main" 16: String "main"
19: String "// OpModuleProcessed auto-map-locations 19: String "// OpModuleProcessed auto-map-locations
@ -19,6 +19,111 @@ spv.debuginfo.glsl.vert
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
/*
The MIT License (MIT)
Copyright (c) 2022 Sascha Willems
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#version 450
// Vertex attributes
layout (location = 0) in vec3 inPos;
layout (location = 1) in vec3 inNormal;
layout (location = 2) in vec2 inUV;
layout (location = 3) in vec3 inColor;
// Instanced attributes
layout (location = 4) in vec3 instancePos;
layout (location = 5) in vec3 instanceRot;
layout (location = 6) in float instanceScale;
layout (location = 7) in int instanceTexIndex;
layout (binding = 0) uniform UBO
{
mat4 projection;
mat4 modelview;
vec4 lightPos;
float locSpeed;
float globSpeed;
} ubo;
layout (location = 0) out vec3 outNormal;
layout (location = 1) out vec3 outColor;
layout (location = 2) out vec3 outUV;
layout (location = 3) out vec3 outViewVec;
layout (location = 4) out vec3 outLightVec;
void main()
{
outColor = inColor;
outUV = vec3(inUV, instanceTexIndex);
mat3 mx, my, mz;
// rotate around x
float s = sin(instanceRot.x + ubo.locSpeed);
float c = cos(instanceRot.x + ubo.locSpeed);
mx[0] = vec3(c, s, 0.0);
mx[1] = vec3(-s, c, 0.0);
mx[2] = vec3(0.0, 0.0, 1.0);
// rotate around y
s = sin(instanceRot.y + ubo.locSpeed);
c = cos(instanceRot.y + ubo.locSpeed);
my[0] = vec3(c, 0.0, s);
my[1] = vec3(0.0, 1.0, 0.0);
my[2] = vec3(-s, 0.0, c);
// rot around z
s = sin(instanceRot.z + ubo.locSpeed);
c = cos(instanceRot.z + ubo.locSpeed);
mz[0] = vec3(1.0, 0.0, 0.0);
mz[1] = vec3(0.0, c, s);
mz[2] = vec3(0.0, -s, c);
mat3 rotMat = mz * my * mx;
mat4 gRotMat;
s = sin(instanceRot.y + ubo.globSpeed);
c = cos(instanceRot.y + ubo.globSpeed);
gRotMat[0] = vec4(c, 0.0, s, 0.0);
gRotMat[1] = vec4(0.0, 1.0, 0.0, 0.0);
gRotMat[2] = vec4(-s, 0.0, c, 0.0);
gRotMat[3] = vec4(0.0, 0.0, 0.0, 1.0);
vec4 locPos = vec4(inPos.xyz * rotMat, 1.0);
vec4 pos = vec4((locPos.xyz * instanceScale) + instancePos, 1.0);
gl_Position = ubo.projection * ubo.modelview * gRotMat * pos;
outNormal = mat3(ubo.modelview * gRotMat) * inverse(rotMat) * inNormal;
pos = ubo.modelview * vec4(inPos.xyz + instancePos, 1.0);
vec3 lPos = mat3(ubo.modelview) * ubo.lightPos.xyz;
outLightVec = lPos - pos.xyz;
outViewVec = -pos.xyz;
}
" "
29: String "float" 29: String "float"
37: String "outColor" 37: String "outColor"
@ -50,11 +155,12 @@ spv.debuginfo.glsl.vert
344: String "gl_PointSize" 344: String "gl_PointSize"
346: String "gl_CullDistance" 346: String "gl_CullDistance"
349: String "gl_PerVertex" 349: String "gl_PerVertex"
372: String "outNormal" 355: String ""
391: String "inNormal" 373: String "outNormal"
408: String "lPos" 392: String "inNormal"
429: String "outLightVec" 409: String "lPos"
438: String "outViewVec" 430: String "outLightVec"
439: String "outViewVec"
Name 14 "main" Name 14 "main"
Name 35 "outColor" Name 35 "outColor"
Name 42 "inColor" Name 42 "inColor"
@ -87,11 +193,11 @@ spv.debuginfo.glsl.vert
MemberName 339(gl_PerVertex) 2 "gl_ClipDistance" MemberName 339(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 339(gl_PerVertex) 3 "gl_CullDistance" MemberName 339(gl_PerVertex) 3 "gl_CullDistance"
Name 353 "" Name 353 ""
Name 370 "outNormal" Name 371 "outNormal"
Name 389 "inNormal" Name 390 "inNormal"
Name 406 "lPos" Name 407 "lPos"
Name 427 "outLightVec" Name 428 "outLightVec"
Name 436 "outViewVec" Name 437 "outViewVec"
Decorate 35(outColor) Location 1 Decorate 35(outColor) Location 1
Decorate 42(inColor) Location 3 Decorate 42(inColor) Location 3
Decorate 47(outUV) Location 2 Decorate 47(outUV) Location 2
@ -118,10 +224,10 @@ spv.debuginfo.glsl.vert
MemberDecorate 339(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 339(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 339(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 339(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 339(gl_PerVertex) Block Decorate 339(gl_PerVertex) Block
Decorate 370(outNormal) Location 0 Decorate 371(outNormal) Location 0
Decorate 389(inNormal) Location 1 Decorate 390(inNormal) Location 1
Decorate 427(outLightVec) Location 4 Decorate 428(outLightVec) Location 4
Decorate 436(outViewVec) Location 3 Decorate 437(outViewVec) Location 3
4: TypeVoid 4: TypeVoid
5: TypeFunction 4 5: TypeFunction 4
7: TypeInt 32 0 7: TypeInt 32 0
@ -272,27 +378,27 @@ spv.debuginfo.glsl.vert
351: TypePointer Output 339(gl_PerVertex) 351: TypePointer Output 339(gl_PerVertex)
352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 348 13 12 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 348 13 12
353: 351(ptr) Variable Output 353: 351(ptr) Variable Output
354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 348 18 350 12 21 2 353 39 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 355 348 18 350 12 21 355 353 39
355: TypePointer Uniform 92 356: TypePointer Uniform 92
356: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 24 12 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 24 12
367: TypePointer Output 90(fvec4) 368: TypePointer Output 90(fvec4)
368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 13 12 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 13 12
370(outNormal): 33(ptr) Variable Output 371(outNormal): 33(ptr) Variable Output
373: 7(int) Constant 99 374: 7(int) Constant 99
371: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 372 32 18 373 12 21 372 370(outNormal) 39 372: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 373 32 18 374 12 21 373 371(outNormal) 39
389(inNormal): 40(ptr) Variable Input 390(inNormal): 40(ptr) Variable Input
390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 391 32 18 373 12 21 391 389(inNormal) 39 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 392 32 18 374 12 21 392 390(inNormal) 39
396: 7(int) Constant 101 397: 7(int) Constant 101
409: 7(int) Constant 102 410: 7(int) Constant 102
407: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 408 32 18 409 12 17 23 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 32 18 410 12 17 23
421: TypePointer Uniform 90(fvec4) 422: TypePointer Uniform 90(fvec4)
422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 24 12 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 24 12
427(outLightVec): 33(ptr) Variable Output 428(outLightVec): 33(ptr) Variable Output
430: 7(int) Constant 103 431: 7(int) Constant 103
428: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 429 32 18 430 12 21 429 427(outLightVec) 39 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 32 18 431 12 21 430 428(outLightVec) 39
436(outViewVec): 33(ptr) Variable Output 437(outViewVec): 33(ptr) Variable Output
439: 7(int) Constant 104 440: 7(int) Constant 104
437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 438 32 18 439 12 21 438 436(outViewVec) 39 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 439 32 18 440 12 21 439 437(outViewVec) 39
14(main): 4 Function None 5 14(main): 4 Function None 5
15: Label 15: Label
76(s): 73(ptr) Variable Function 76(s): 73(ptr) Variable Function
@ -304,7 +410,7 @@ spv.debuginfo.glsl.vert
272(gRotMat): 270(ptr) Variable Function 272(gRotMat): 270(ptr) Variable Function
299(locPos): 281(ptr) Variable Function 299(locPos): 281(ptr) Variable Function
315(pos): 281(ptr) Variable Function 315(pos): 281(ptr) Variable Function
406(lPos): 151(ptr) Variable Function 407(lPos): 151(ptr) Variable Function
26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12
25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main)
@ -487,74 +593,74 @@ spv.debuginfo.glsl.vert
335: 28(float) CompositeExtract 332 2 335: 28(float) CompositeExtract 332 2
336: 90(fvec4) CompositeConstruct 333 334 335 163 336: 90(fvec4) CompositeConstruct 333 334 335 163
Store 315(pos) 336 Store 315(pos) 336
358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 350 350 12 12 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 350 350 12 12
357: 355(ptr) AccessChain 114(ubo) 146 358: 356(ptr) AccessChain 114(ubo) 146
359: 92 Load 357 360: 92 Load 358
360: 355(ptr) AccessChain 114(ubo) 154 361: 356(ptr) AccessChain 114(ubo) 154
361: 92 Load 360 362: 92 Load 361
362: 92 MatrixTimesMatrix 359 361 363: 92 MatrixTimesMatrix 360 362
363: 92 Load 272(gRotMat) 364: 92 Load 272(gRotMat)
364: 92 MatrixTimesMatrix 362 363 365: 92 MatrixTimesMatrix 363 364
365: 90(fvec4) Load 315(pos) 366: 90(fvec4) Load 315(pos)
366: 90(fvec4) MatrixTimesVector 364 365 367: 90(fvec4) MatrixTimesVector 365 366
369: 367(ptr) AccessChain 353 146 370: 368(ptr) AccessChain 353 146
Store 369 366 Store 370 367
375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 373 373 12 12 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 374 374 12 12
374: 355(ptr) AccessChain 114(ubo) 154 375: 356(ptr) AccessChain 114(ubo) 154
376: 92 Load 374 377: 92 Load 375
377: 92 Load 272(gRotMat) 378: 92 Load 272(gRotMat)
378: 92 MatrixTimesMatrix 376 377 379: 92 MatrixTimesMatrix 377 378
379: 90(fvec4) CompositeExtract 378 0 380: 90(fvec4) CompositeExtract 379 0
380: 31(fvec3) VectorShuffle 379 379 0 1 2 381: 31(fvec3) VectorShuffle 380 380 0 1 2
381: 90(fvec4) CompositeExtract 378 1 382: 90(fvec4) CompositeExtract 379 1
382: 31(fvec3) VectorShuffle 381 381 0 1 2 383: 31(fvec3) VectorShuffle 382 382 0 1 2
383: 90(fvec4) CompositeExtract 378 2 384: 90(fvec4) CompositeExtract 379 2
384: 31(fvec3) VectorShuffle 383 383 0 1 2 385: 31(fvec3) VectorShuffle 384 384 0 1 2
385: 136 CompositeConstruct 380 382 384 386: 136 CompositeConstruct 381 383 385
386: 136 Load 242(rotMat) 387: 136 Load 242(rotMat)
387: 136 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 386 388: 136 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 387
388: 136 MatrixTimesMatrix 385 387 389: 136 MatrixTimesMatrix 386 388
392: 31(fvec3) Load 389(inNormal) 393: 31(fvec3) Load 390(inNormal)
393: 31(fvec3) MatrixTimesVector 388 392 394: 31(fvec3) MatrixTimesVector 389 393
Store 370(outNormal) 393 Store 371(outNormal) 394
395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 396 396 12 12 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 397 397 12 12
394: 355(ptr) AccessChain 114(ubo) 154 395: 356(ptr) AccessChain 114(ubo) 154
397: 92 Load 394 398: 92 Load 395
398: 31(fvec3) Load 305(inPos) 399: 31(fvec3) Load 305(inPos)
399: 31(fvec3) Load 328(instancePos) 400: 31(fvec3) Load 328(instancePos)
400: 31(fvec3) FAdd 398 399 401: 31(fvec3) FAdd 399 400
401: 28(float) CompositeExtract 400 0 402: 28(float) CompositeExtract 401 0
402: 28(float) CompositeExtract 400 1 403: 28(float) CompositeExtract 401 1
403: 28(float) CompositeExtract 400 2 404: 28(float) CompositeExtract 401 2
404: 90(fvec4) CompositeConstruct 401 402 403 163 405: 90(fvec4) CompositeConstruct 402 403 404 163
405: 90(fvec4) MatrixTimesVector 397 404 406: 90(fvec4) MatrixTimesVector 398 405
Store 315(pos) 405 Store 315(pos) 406
411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 409 409 12 12 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 410 410 12 12
410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 407 406(lPos) 81 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(lPos) 81
412: 355(ptr) AccessChain 114(ubo) 154 413: 356(ptr) AccessChain 114(ubo) 154
413: 92 Load 412 414: 92 Load 413
414: 90(fvec4) CompositeExtract 413 0 415: 90(fvec4) CompositeExtract 414 0
415: 31(fvec3) VectorShuffle 414 414 0 1 2 416: 31(fvec3) VectorShuffle 415 415 0 1 2
416: 90(fvec4) CompositeExtract 413 1 417: 90(fvec4) CompositeExtract 414 1
417: 31(fvec3) VectorShuffle 416 416 0 1 2 418: 31(fvec3) VectorShuffle 417 417 0 1 2
418: 90(fvec4) CompositeExtract 413 2 419: 90(fvec4) CompositeExtract 414 2
419: 31(fvec3) VectorShuffle 418 418 0 1 2 420: 31(fvec3) VectorShuffle 419 419 0 1 2
420: 136 CompositeConstruct 415 417 419 421: 136 CompositeConstruct 416 418 420
423: 421(ptr) AccessChain 114(ubo) 162 424: 422(ptr) AccessChain 114(ubo) 162
424: 90(fvec4) Load 423 425: 90(fvec4) Load 424
425: 31(fvec3) VectorShuffle 424 424 0 1 2 426: 31(fvec3) VectorShuffle 425 425 0 1 2
426: 31(fvec3) MatrixTimesVector 420 425 427: 31(fvec3) MatrixTimesVector 421 426
Store 406(lPos) 426 Store 407(lPos) 427
432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 430 430 12 12 433: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 431 431 12 12
431: 31(fvec3) Load 406(lPos) 432: 31(fvec3) Load 407(lPos)
433: 90(fvec4) Load 315(pos) 434: 90(fvec4) Load 315(pos)
434: 31(fvec3) VectorShuffle 433 433 0 1 2 435: 31(fvec3) VectorShuffle 434 434 0 1 2
435: 31(fvec3) FSub 431 434 436: 31(fvec3) FSub 432 435
Store 427(outLightVec) 435 Store 428(outLightVec) 436
441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 439 439 12 12 442: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 440 440 12 12
440: 90(fvec4) Load 315(pos) 441: 90(fvec4) Load 315(pos)
442: 31(fvec3) VectorShuffle 440 440 0 1 2 443: 31(fvec3) VectorShuffle 441 441 0 1 2
443: 31(fvec3) FNegate 442 444: 31(fvec3) FNegate 443
Store 436(outViewVec) 443 Store 437(outViewVec) 444
Return Return
FunctionEnd FunctionEnd

View file

@ -1,7 +1,7 @@
spv.debuginfo.rt_types.glsl.rgen spv.debuginfo.rt_types.glsl.rgen
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 8000b // Generated by (magic number): 8000b
// Id's are bound by 122 // Id's are bound by 123
Capability RayQueryKHR Capability RayQueryKHR
Capability RayTracingNV Capability RayTracingNV
@ -12,7 +12,7 @@ spv.debuginfo.rt_types.glsl.rgen
3: ExtInstImport "GLSL.std.450" 3: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint RayGenerationKHR 14 "main" EntryPoint RayGenerationKHR 14 "main"
2: String "" 2: String "spv.debuginfo.rt_types.glsl.rgen"
8: String "uint" 8: String "uint"
16: String "main" 16: String "main"
19: String "// OpModuleProcessed auto-map-locations 19: String "// OpModuleProcessed auto-map-locations
@ -22,6 +22,29 @@ spv.debuginfo.rt_types.glsl.rgen
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
#version 460
#extension GL_NV_ray_tracing : enable
#extension GL_EXT_ray_query : enable
layout(binding = 0, set = 0) uniform accelerationStructureEXT acc0;
layout(shaderRecordNV) buffer block
{
vec3 dir;
vec3 origin;
};
void main()
{
rayQueryEXT localRayQuery;
uint rayFlags = gl_RayFlagsOpaqueEXT | gl_RayFlagsSkipClosestHitShaderEXT;
float tMin = 0.f;
float tMax = 1000.f;
rayQueryInitializeEXT(localRayQuery, acc0, rayFlags, 0xFF , origin, tMin, dir, tMax);
if (!rayQueryProceedEXT(localRayQuery))
{
rayQueryTerminateEXT(localRayQuery);
}
}
" "
33: String "rayFlags" 33: String "rayFlags"
40: String "float" 40: String "float"
@ -35,8 +58,9 @@ spv.debuginfo.rt_types.glsl.rgen
78: String "acc0" 78: String "acc0"
87: String "origin" 87: String "origin"
90: String "block" 90: String "block"
97: String "int" 96: String ""
110: String "bool" 98: String "int"
111: String "bool"
SourceExtension "GL_EXT_ray_query" SourceExtension "GL_EXT_ray_query"
SourceExtension "GL_NV_ray_tracing" SourceExtension "GL_NV_ray_tracing"
Name 14 "main" Name 14 "main"
@ -113,17 +137,17 @@ spv.debuginfo.rt_types.glsl.rgen
92: 7(int) Constant 5343 92: 7(int) Constant 5343
93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 92 12 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 92 12
94: 91(ptr) Variable ShaderRecordBufferKHR 94: 91(ptr) Variable ShaderRecordBufferKHR
95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 89 18 61 12 21 2 94 69 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 89 18 61 12 21 96 94 69
96: TypeInt 32 1 97: TypeInt 32 1
98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 10 23 12 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 10 23 12
99: 96(int) Constant 1 100: 97(int) Constant 1
100: TypePointer ShaderRecordBufferKHR 83(fvec3) 101: TypePointer ShaderRecordBufferKHR 83(fvec3)
101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 84 92 12 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 84 92 12
105: 96(int) Constant 0 106: 97(int) Constant 0
109: TypeBool 110: TypeBool
111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 110 10 24 12 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 111 10 24 12
114: 7(int) Constant 19 115: 7(int) Constant 19
120: 7(int) Constant 21 121: 7(int) Constant 21
14(main): 4 Function None 5 14(main): 4 Function None 5
15: Label 15: Label
31(rayFlags): 28(ptr) Variable Function 31(rayFlags): 28(ptr) Variable Function
@ -144,24 +168,24 @@ spv.debuginfo.rt_types.glsl.rgen
80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 61 61 12 12 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 61 61 12 12
79: 70 Load 76(acc0) 79: 70 Load 76(acc0)
81: 7(int) Load 31(rayFlags) 81: 7(int) Load 31(rayFlags)
102: 100(ptr) AccessChain 94 99 103: 101(ptr) AccessChain 94 100
103: 83(fvec3) Load 102 104: 83(fvec3) Load 103
104: 39(float) Load 44(tMin) 105: 39(float) Load 44(tMin)
106: 100(ptr) AccessChain 94 105 107: 101(ptr) AccessChain 94 106
107: 83(fvec3) Load 106 108: 83(fvec3) Load 107
108: 39(float) Load 51(tMax) 109: 39(float) Load 51(tMax)
RayQueryInitializeKHR 66(localRayQuery) 79 81 82 103 104 107 108 RayQueryInitializeKHR 66(localRayQuery) 79 81 82 104 105 108 109
113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 114 114 12 12 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 115 115 12 12
112: 109(bool) RayQueryProceedKHR 66(localRayQuery) 113: 110(bool) RayQueryProceedKHR 66(localRayQuery)
115: 109(bool) LogicalNot 112 116: 110(bool) LogicalNot 113
SelectionMerge 117 None SelectionMerge 118 None
BranchConditional 115 116 117 BranchConditional 116 117 118
116: Label 117: Label
118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 120 120 12 12 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 121 121 12 12
RayQueryTerminateKHR 66(localRayQuery) RayQueryTerminateKHR 66(localRayQuery)
Branch 117 Branch 118
117: Label 118: Label
121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
Return Return
FunctionEnd FunctionEnd

View file

@ -15,7 +15,7 @@ spv.debuginfo.scalar_types.glsl.frag
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 14 "main" EntryPoint Fragment 14 "main"
ExecutionMode 14 OriginUpperLeft ExecutionMode 14 OriginUpperLeft
2: String "" 2: String "spv.debuginfo.scalar_types.glsl.frag"
8: String "uint" 8: String "uint"
16: String "main" 16: String "main"
19: String "// OpModuleProcessed auto-map-locations 19: String "// OpModuleProcessed auto-map-locations
@ -25,7 +25,61 @@ spv.debuginfo.scalar_types.glsl.frag
// OpModuleProcessed keep-uncalled // OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main // OpModuleProcessed entry-point main
#line 1 #line 1
" /*
The MIT License (MIT)
Copyright (c) 2023 NVIDIA CORPORATION.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#version 460
#extension GL_EXT_shader_explicit_arithmetic_types : require
bool VAR_bool;
int VAR_int;
uint VAR_uint;
float VAR_float;
double VAR_double;
int8_t VAR_int8_t;
uint8_t VAR_uint8_t;
int16_t VAR_int16_t;
uint16_t VAR_uint16_t;
int64_t VAR_int64_t;
uint64_t VAR_uint64_t;
float16_t VAR_float16_t;
void main() {
VAR_bool = bool(0);
VAR_int = int(0);
VAR_uint = uint(0);
VAR_float = float(0);
VAR_double = double(0);
VAR_int8_t = int8_t(0);
VAR_uint8_t = uint8_t(0);
VAR_int16_t = int16_t(0);
VAR_uint16_t = uint16_t(0);
VAR_int64_t = int64_t(0);
VAR_uint64_t = uint64_t(0);
VAR_float16_t = float16_t(0);
}"
29: String "bool" 29: String "bool"
35: String "VAR_bool" 35: String "VAR_bool"
41: String "int" 41: String "int"

View file

@ -1,55 +1,55 @@
/* /*
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2023 NVIDIA CORPORATION. Copyright (c) 2023 NVIDIA CORPORATION.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software. copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#version 460 #version 460
#extension GL_EXT_shader_explicit_arithmetic_types : require #extension GL_EXT_shader_explicit_arithmetic_types : require
bool VAR_bool; bool VAR_bool;
int VAR_int; int VAR_int;
uint VAR_uint; uint VAR_uint;
float VAR_float; float VAR_float;
double VAR_double; double VAR_double;
int8_t VAR_int8_t; int8_t VAR_int8_t;
uint8_t VAR_uint8_t; uint8_t VAR_uint8_t;
int16_t VAR_int16_t; int16_t VAR_int16_t;
uint16_t VAR_uint16_t; uint16_t VAR_uint16_t;
int64_t VAR_int64_t; int64_t VAR_int64_t;
uint64_t VAR_uint64_t; uint64_t VAR_uint64_t;
float16_t VAR_float16_t; float16_t VAR_float16_t;
void main() { void main() {
VAR_bool = bool(0); VAR_bool = bool(0);
VAR_int = int(0); VAR_int = int(0);
VAR_uint = uint(0); VAR_uint = uint(0);
VAR_float = float(0); VAR_float = float(0);
VAR_double = double(0); VAR_double = double(0);
VAR_int8_t = int8_t(0); VAR_int8_t = int8_t(0);
VAR_uint8_t = uint8_t(0); VAR_uint8_t = uint8_t(0);
VAR_int16_t = int16_t(0); VAR_int16_t = int16_t(0);
VAR_uint16_t = uint16_t(0); VAR_uint16_t = uint16_t(0);
VAR_int64_t = int64_t(0); VAR_int64_t = int64_t(0);
VAR_uint64_t = uint64_t(0); VAR_uint64_t = uint64_t(0);
VAR_float16_t = float16_t(0); VAR_float16_t = float16_t(0);
} }

View file

@ -255,7 +255,7 @@ TEST_P(CompileVulkanToNonSemanticShaderDebugInfoTest, FromFile)
{ {
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
Target::Spv, true, "", "/baseResults/", false, false, true); Target::Spv, true, "", "/baseResults/", false, true, true);
} }
// clang-format off // clang-format off