David Gonzalez Martin be2de1d672 Render a texture
2024-11-10 08:48:46 -06:00

1309 lines
76 KiB
Plaintext

spv.debuginfo.glsl.frag
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 879
Capability Shader
Capability ImageQuery
Extension "SPV_KHR_non_semantic_info"
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
3: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 14 "main" 499 552
ExecutionMode 14 OriginUpperLeft
2: String "spv.debuginfo.glsl.frag"
8: String "uint"
17: String "float"
39: String "textureProj"
42: String "// OpModuleProcessed auto-map-locations
// OpModuleProcessed auto-map-bindings
// OpModuleProcessed client vulkan100
// OpModuleProcessed target-env vulkan1.0
// OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main
#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"
53: String "layer"
56: String "offset"
64: String "filterPCF"
68: String "sc"
84: String "shadow"
88: String "fragcolor"
93: String "fragpos"
95: String "main"
99: String "int"
105: String "global_var"
120: String "shadowCoord"
142: String "bool"
164: String "dist"
171: String "type.2d.image"
172: String "@type.2d.image"
176: String "type.sampled.image"
177: String "@type.sampled.image"
182: String "samplerShadowMap"
233: String "texDim"
245: String "scale"
252: String "dx"
266: String "dy"
278: String "shadowFactor"
284: String "count"
290: String "range"
297: String "x"
317: String "y"
383: String "i"
401: String "shadowClip"
411: String "color"
416: String "viewMatrix"
419: String "Light"
425: String "lights"
428: String "debugDisplayTarget"
432: String "UBO"
437: String "ubo"
483: String "fragPos"
495: String "samplerposition"
501: String "inUV"
507: String "normal"
513: String "samplerNormal"
520: String "albedo"
526: String "samplerAlbedo"
554: String "outFragColor"
648: String "N"
672: String "L"
698: String "V"
713: String "lightCosInnerAngle"
720: String "lightCosOuterAngle"
727: String "lightRange"
734: String "dir"
750: String "cosDir"
759: String "spotEffect"
769: String "heightAttenuation"
778: String "NdotL"
788: String "diff"
796: String "R"
806: String "NdotR"
816: String "spec"
Name 14 "main"
Name 37 "textureProj(vf4;f1;vf2;"
Name 34 "P"
Name 35 "layer"
Name 36 "offset"
Name 62 "filterPCF(vf4;f1;"
Name 60 "sc"
Name 61 "layer"
Name 82 "shadow(vf3;vf3;"
Name 80 "fragcolor"
Name 81 "fragpos"
Name 103 "global_var"
Name 112 "shadow"
Name 118 "shadowCoord"
Name 162 "dist"
Name 180 "samplerShadowMap"
Name 231 "texDim"
Name 243 "scale"
Name 250 "dx"
Name 264 "dy"
Name 276 "shadowFactor"
Name 282 "count"
Name 288 "range"
Name 295 "x"
Name 315 "y"
Name 348 "param"
Name 350 "param"
Name 352 "param"
Name 381 "i"
Name 399 "shadowClip"
Name 409 "Light"
MemberName 409(Light) 0 "position"
MemberName 409(Light) 1 "target"
MemberName 409(Light) 2 "color"
MemberName 409(Light) 3 "viewMatrix"
Name 422 "UBO"
MemberName 422(UBO) 0 "viewPos"
MemberName 422(UBO) 1 "lights"
MemberName 422(UBO) 2 "useShadows"
MemberName 422(UBO) 3 "debugDisplayTarget"
Name 435 "ubo"
Name 449 "shadowFactor"
Name 456 "param"
Name 458 "param"
Name 481 "fragPos"
Name 493 "samplerposition"
Name 499 "inUV"
Name 505 "normal"
Name 511 "samplerNormal"
Name 518 "albedo"
Name 524 "samplerAlbedo"
Name 552 "outFragColor"
Name 557 "param"
Name 560 "param"
Name 636 "fragcolor"
Name 646 "N"
Name 654 "i"
Name 670 "L"
Name 685 "dist"
Name 696 "V"
Name 711 "lightCosInnerAngle"
Name 718 "lightCosOuterAngle"
Name 725 "lightRange"
Name 732 "dir"
Name 748 "cosDir"
Name 757 "spotEffect"
Name 767 "heightAttenuation"
Name 776 "NdotL"
Name 786 "diff"
Name 794 "R"
Name 804 "NdotR"
Name 814 "spec"
Name 861 "param"
Name 866 "param"
Decorate 180(samplerShadowMap) Binding 5
Decorate 180(samplerShadowMap) DescriptorSet 0
MemberDecorate 409(Light) 0 Offset 0
MemberDecorate 409(Light) 1 Offset 16
MemberDecorate 409(Light) 2 Offset 32
MemberDecorate 409(Light) 3 ColMajor
MemberDecorate 409(Light) 3 MatrixStride 16
MemberDecorate 409(Light) 3 Offset 48
Decorate 420 ArrayStride 112
Decorate 422(UBO) Block
MemberDecorate 422(UBO) 0 Offset 0
MemberDecorate 422(UBO) 1 Offset 16
MemberDecorate 422(UBO) 2 Offset 352
MemberDecorate 422(UBO) 3 Offset 356
Decorate 435(ubo) Binding 4
Decorate 435(ubo) DescriptorSet 0
Decorate 493(samplerposition) Binding 1
Decorate 493(samplerposition) DescriptorSet 0
Decorate 499(inUV) Location 0
Decorate 511(samplerNormal) Binding 2
Decorate 511(samplerNormal) DescriptorSet 0
Decorate 524(samplerAlbedo) Binding 3
Decorate 524(samplerAlbedo) DescriptorSet 0
Decorate 552(outFragColor) Location 0
4: TypeVoid
5: TypeFunction 4
7: TypeInt 32 0
10: 7(int) Constant 32
11: 7(int) Constant 6
12: 7(int) Constant 0
9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12
13: 7(int) Constant 3
6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4
16: TypeFloat 32
18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12
19: TypeVector 16(float) 4
20: 7(int) Constant 4
21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20
22: TypePointer Function 19(fvec4)
23: 7(int) Constant 7
24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12
25: TypePointer Function 16(float)
26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12
27: TypeVector 16(float) 2
28: 7(int) Constant 2
29: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 28
30: TypePointer Function 27(fvec2)
31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 23 12
32: TypeFunction 16(float) 22(ptr) 25(ptr) 30(ptr)
33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 29
41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 42
43: 7(int) Constant 59
45: 7(int) Constant 1
44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 45 20 41 28
40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 33 41 43 12 44 39 13 43
46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 21 41 43 12 40 20 45
49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression)
52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 43 12 40 20 28
55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 29 41 43 12 40 20 13
58: TypeFunction 16(float) 22(ptr) 25(ptr)
59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18
66: 7(int) Constant 76
65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 41 66 12 44 64 13 66
67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 68 21 41 66 12 65 20 45
72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 66 12 65 20 28
74: TypeVector 16(float) 3
75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13
76: TypePointer Function 74(fvec3)
77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 23 12
78: TypeFunction 74(fvec3) 76(ptr) 76(ptr)
79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 75 75 75
86: 7(int) Constant 99
85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 41 86 12 44 84 13 86
87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 41 86 12 85 20 45
92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 41 86 12 85 20 28
97: 7(int) Constant 116
96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 95 6 41 97 12 44 95 13 97
98: TypeInt 32 1
100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 99 10 20 12
101: TypePointer Private 98(int)
102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 11 12
103(global_var): 101(ptr) Variable Private
106: 7(int) Constant 41
107: 7(int) Constant 8
104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 105 100 41 106 12 44 105 103(global_var) 107
108: 98(int) Constant 0
114: 7(int) Constant 61
113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 18 41 114 12 40 20
117: 16(float) Constant 1065353216
121: 7(int) Constant 62
119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 21 41 121 12 40 20
131: 7(int) Constant 63
133: 16(float) Constant 1056964608
141: TypeBool
143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 28 12
146: 7(int) Constant 65
148: 16(float) Constant 3212836864
165: 7(int) Constant 67
163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 164 18 41 165 12 40 20
169: TypeImage 16(float) 2D array sampled format:Unknown
173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone)
170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 12 41 165 12 44 172 173 13
174: TypeSampledImage 169
175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 176 12 41 165 12 44 177 173 13
178: TypePointer UniformConstant 174
179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 175 12 12
180(samplerShadowMap): 178(ptr) Variable UniformConstant
181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 182 175 41 165 12 44 182 180(samplerShadowMap) 107
196: 7(int) Constant 68
198: 16(float) Constant 0
213: 16(float) Constant 1048576000
216: 7(int) Constant 70
220: 7(int) Constant 73
225: 7(int) Constant 74
227: TypeVector 98(int) 2
228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 28
229: TypePointer Function 227(ivec2)
230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 228 23 12
234: 7(int) Constant 78
232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 233 228 41 234 12 65 20
239: TypeVector 98(int) 3
240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 13
246: 7(int) Constant 79
244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 245 18 41 246 12 65 20
249: 16(float) Constant 1069547520
253: 7(int) Constant 80
251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 252 18 41 253 12 65 20
258: TypePointer Function 98(int)
259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 23 12
267: 7(int) Constant 81
265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 18 41 267 12 65 20
279: 7(int) Constant 83
277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 18 41 279 12 65 20
285: 7(int) Constant 84
283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 284 100 41 285 12 65 20
291: 7(int) Constant 85
289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 290 100 41 291 12 65 20
294: 98(int) Constant 1
298: 7(int) Constant 87
296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 100 41 298 12 65 20
318: 7(int) Constant 89
316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 317 100 41 318 12 65 20
339: 7(int) Constant 91
358: 7(int) Constant 92
371: 7(int) Constant 96
379: 7(int) Constant 97
384: 7(int) Constant 100
382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 383 100 41 384 12 85 20
397: 98(int) Constant 3
402: 7(int) Constant 102
400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 401 21 41 402 12 85 20
406: TypeMatrix 19(fvec4) 4
408: 141(bool) ConstantTrue
407: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 408
409(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 406
412: 7(int) Constant 47
410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 411 21 41 412 23 12 12 13
413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 411 21 41 412 23 12 12 13
414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 411 21 41 412 23 12 12 13
417: 7(int) Constant 48
415: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 416 407 41 417 23 12 12 13
418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 419 45 41 402 12 44 419 12 13 410 413 414 415
420: TypeArray 409(Light) 13
421: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 418 13
422(UBO): TypeStruct 19(fvec4) 420 98(int) 98(int)
423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 411 21 41 412 23 12 12 13
426: 7(int) Constant 54
424: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 425 421 41 426 107 12 12 13
429: 7(int) Constant 56
427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 428 100 41 429 11 12 12 13
430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 428 100 41 429 11 12 12 13
431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 432 45 41 402 12 44 432 12 13 423 424 427 430
433: TypePointer Uniform 422(UBO)
434: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 431 28 12
435(ubo): 433(ptr) Variable Uniform
436: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 437 431 41 402 12 44 437 435(ubo) 107
439: TypePointer Uniform 406
440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 407 28 12
451: 7(int) Constant 106
450: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 18 41 451 12 85 20
462: 7(int) Constant 111
472: 7(int) Constant 113
477: 7(int) Constant 114
484: 7(int) Constant 119
482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 483 75 41 484 12 96 20
487: TypeImage 16(float) 2D sampled format:Unknown
488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 12 41 484 12 44 172 173 13
489: TypeSampledImage 487
490: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 176 12 41 484 12 44 177 173 13
491: TypePointer UniformConstant 489
492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 490 12 12
493(samplerposition): 491(ptr) Variable UniformConstant
494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 495 490 41 484 12 44 495 493(samplerposition) 107
497: TypePointer Input 27(fvec2)
498: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 45 12
499(inUV): 497(ptr) Variable Input
500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 501 29 41 484 12 44 501 499(inUV) 107
508: 7(int) Constant 120
506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 507 75 41 508 12 96 20
511(samplerNormal): 491(ptr) Variable UniformConstant
512: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 513 490 41 508 12 44 513 511(samplerNormal) 107
521: 7(int) Constant 121
519: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 520 21 41 521 12 96 20
524(samplerAlbedo): 491(ptr) Variable UniformConstant
525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 526 490 41 521 12 44 526 524(samplerAlbedo) 107
530: TypePointer Uniform 98(int)
531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 28 12
534: 7(int) Constant 124
542: 7(int) Constant 125
550: TypePointer Output 19(fvec4)
551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12
552(outFragColor): 550(ptr) Variable Output
555: 7(int) Constant 127
553: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 554 21 41 555 12 44 554 552(outFragColor) 107
556: 74(fvec3) ConstantComposite 117 117 117
563: TypePointer Output 16(float)
564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12
572: 7(int) Constant 128
577: 7(int) Constant 130
585: 7(int) Constant 131
590: 7(int) Constant 133
598: 7(int) Constant 134
603: 7(int) Constant 136
612: 7(int) Constant 137
617: 7(int) Constant 139
626: 7(int) Constant 140
632: 7(int) Constant 142
634: 7(int) Constant 143
638: 7(int) Constant 147
637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 41 638 12 96 20
644: 16(float) Constant 1036831949
649: 7(int) Constant 149
647: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 648 75 41 649 12 96 20
656: 7(int) Constant 151
655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 383 100 41 656 12 96 20
673: 7(int) Constant 154
671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 672 75 41 673 12 96 20
678: TypePointer Uniform 19(fvec4)
679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 28 12
687: 7(int) Constant 156
686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 164 18 41 687 12 96 20
694: 7(int) Constant 157
699: 7(int) Constant 160
697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 698 75 41 699 12 96 20
709: 7(int) Constant 161
714: 7(int) Constant 163
712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 18 41 714 12 96 20
717: 16(float) Constant 1064781546
721: 7(int) Constant 164
719: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 720 18 41 721 12 96 20
724: 16(float) Constant 1063781322
728: 7(int) Constant 165
726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 18 41 728 12 96 20
731: 16(float) Constant 1120403456
735: 7(int) Constant 168
733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 75 41 735 12 96 20
751: 7(int) Constant 171
749: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 750 18 41 751 12 96 20
760: 7(int) Constant 172
758: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 759 18 41 760 12 96 20
770: 7(int) Constant 173
768: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 769 18 41 770 12 96 20
779: 7(int) Constant 176
777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 778 18 41 779 12 96 20
789: 7(int) Constant 177
787: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 788 75 41 789 12 96 20
797: 7(int) Constant 180
795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 796 75 41 797 12 96 20
807: 7(int) Constant 181
805: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 806 18 41 807 12 96 20
817: 7(int) Constant 182
815: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 816 75 41 817 12 96 20
821: 16(float) Constant 1098907648
826: 16(float) Constant 1075838976
831: 7(int) Constant 184
839: 98(int) Constant 2
856: 7(int) Constant 188
865: 7(int) Constant 190
872: 7(int) Constant 193
878: 7(int) Constant 194
14(main): 4 Function None 5
15: Label
481(fragPos): 76(ptr) Variable Function
505(normal): 76(ptr) Variable Function
518(albedo): 22(ptr) Variable Function
557(param): 76(ptr) Variable Function
560(param): 76(ptr) Variable Function
636(fragcolor): 76(ptr) Variable Function
646(N): 76(ptr) Variable Function
654(i): 258(ptr) Variable Function
670(L): 76(ptr) Variable Function
685(dist): 25(ptr) Variable Function
696(V): 76(ptr) Variable Function
711(lightCosInnerAngle): 25(ptr) Variable Function
718(lightCosOuterAngle): 25(ptr) Variable Function
725(lightRange): 25(ptr) Variable Function
732(dir): 76(ptr) Variable Function
748(cosDir): 25(ptr) Variable Function
757(spotEffect): 25(ptr) Variable Function
767(heightAttenuation): 25(ptr) Variable Function
776(NdotL): 25(ptr) Variable Function
786(diff): 76(ptr) Variable Function
794(R): 76(ptr) Variable Function
804(NdotR): 25(ptr) Variable Function
814(spec): 76(ptr) Variable Function
861(param): 76(ptr) Variable Function
866(param): 76(ptr) Variable Function
109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44
110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 106 106 12 12
Store 103(global_var) 108
479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 97 97 12 12
478: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 14(main)
486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 484 484 12 12
485: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 482 481(fragPos) 49
496: 489 Load 493(samplerposition)
502: 27(fvec2) Load 499(inUV)
503: 19(fvec4) ImageSampleImplicitLod 496 502
504: 74(fvec3) VectorShuffle 503 503 0 1 2
Store 481(fragPos) 504
510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 508 508 12 12
509: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 506 505(normal) 49
514: 489 Load 511(samplerNormal)
515: 27(fvec2) Load 499(inUV)
516: 19(fvec4) ImageSampleImplicitLod 514 515
517: 74(fvec3) VectorShuffle 516 516 0 1 2
Store 505(normal) 517
523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 521 521 12 12
522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 519 518(albedo) 49
527: 489 Load 524(samplerAlbedo)
528: 27(fvec2) Load 499(inUV)
529: 19(fvec4) ImageSampleImplicitLod 527 528
Store 518(albedo) 529
533: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 534 534 12 12
532: 530(ptr) AccessChain 435(ubo) 397
535: 98(int) Load 532
536: 141(bool) SGreaterThan 535 108
SelectionMerge 538 None
BranchConditional 536 537 538
537: Label
540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 542 542 12 12
539: 530(ptr) AccessChain 435(ubo) 397
543: 98(int) Load 539
SelectionMerge 549 None
Switch 543 549
case 1: 544
case 2: 545
case 3: 546
case 4: 547
case 5: 548
544: Label
558: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 555 555 12 12
Store 557(param) 556
561: 74(fvec3) Load 481(fragPos)
Store 560(param) 561
562: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 557(param) 560(param)
565: 563(ptr) AccessChain 552(outFragColor) 12
566: 16(float) CompositeExtract 562 0
Store 565 566
567: 563(ptr) AccessChain 552(outFragColor) 45
568: 16(float) CompositeExtract 562 1
Store 567 568
569: 563(ptr) AccessChain 552(outFragColor) 28
570: 16(float) CompositeExtract 562 2
Store 569 570
571: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 572 572 12 12
Branch 549
545: Label
575: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 577 577 12 12
574: 74(fvec3) Load 481(fragPos)
578: 563(ptr) AccessChain 552(outFragColor) 12
579: 16(float) CompositeExtract 574 0
Store 578 579
580: 563(ptr) AccessChain 552(outFragColor) 45
581: 16(float) CompositeExtract 574 1
Store 580 581
582: 563(ptr) AccessChain 552(outFragColor) 28
583: 16(float) CompositeExtract 574 2
Store 582 583
584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 585 585 12 12
Branch 549
546: Label
588: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
589: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 590 590 12 12
587: 74(fvec3) Load 505(normal)
591: 563(ptr) AccessChain 552(outFragColor) 12
592: 16(float) CompositeExtract 587 0
Store 591 592
593: 563(ptr) AccessChain 552(outFragColor) 45
594: 16(float) CompositeExtract 587 1
Store 593 594
595: 563(ptr) AccessChain 552(outFragColor) 28
596: 16(float) CompositeExtract 587 2
Store 595 596
597: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 598 598 12 12
Branch 549
547: Label
601: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
602: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 603 603 12 12
600: 19(fvec4) Load 518(albedo)
604: 74(fvec3) VectorShuffle 600 600 0 1 2
605: 563(ptr) AccessChain 552(outFragColor) 12
606: 16(float) CompositeExtract 604 0
Store 605 606
607: 563(ptr) AccessChain 552(outFragColor) 45
608: 16(float) CompositeExtract 604 1
Store 607 608
609: 563(ptr) AccessChain 552(outFragColor) 28
610: 16(float) CompositeExtract 604 2
Store 609 610
611: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 612 612 12 12
Branch 549
548: Label
615: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
616: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 617 617 12 12
614: 19(fvec4) Load 518(albedo)
618: 74(fvec3) VectorShuffle 614 614 3 3 3
619: 563(ptr) AccessChain 552(outFragColor) 12
620: 16(float) CompositeExtract 618 0
Store 619 620
621: 563(ptr) AccessChain 552(outFragColor) 45
622: 16(float) CompositeExtract 618 1
Store 621 622
623: 563(ptr) AccessChain 552(outFragColor) 28
624: 16(float) CompositeExtract 618 2
Store 623 624
625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 626 626 12 12
Branch 549
549: Label
630: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
631: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 632 632 12 12
629: 563(ptr) AccessChain 552(outFragColor) 13
Store 629 117
633: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 634 634 12 12
Return
538: Label
640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
641: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 638 638 12 12
639: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 637 636(fragcolor) 49
642: 19(fvec4) Load 518(albedo)
643: 74(fvec3) VectorShuffle 642 642 0 1 2
645: 74(fvec3) VectorTimesScalar 643 644
Store 636(fragcolor) 645
651: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 649 649 12 12
650: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 647 646(N) 49
652: 74(fvec3) Load 505(normal)
653: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 652
Store 646(N) 653
658: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12
657: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 655 654(i) 49
Store 654(i) 108
Branch 659
659: Label
663: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
664: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12
LoopMerge 661 662 None
Branch 665
665: Label
667: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
668: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12
666: 98(int) Load 654(i)
669: 141(bool) SLessThan 666 397
BranchConditional 669 660 661
660: Label
675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 673 673 12 12
674: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 671 670(L) 49
677: 98(int) Load 654(i)
680: 678(ptr) AccessChain 435(ubo) 294 677 108
681: 19(fvec4) Load 680
682: 74(fvec3) VectorShuffle 681 681 0 1 2
683: 74(fvec3) Load 481(fragPos)
684: 74(fvec3) FSub 682 683
Store 670(L) 684
689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 687 687 12 12
688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 686 685(dist) 49
690: 74(fvec3) Load 670(L)
691: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 690
Store 685(dist) 691
693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 694 694 12 12
692: 74(fvec3) Load 670(L)
695: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 692
Store 670(L) 695
701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 699 699 12 12
700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 697 696(V) 49
702: 678(ptr) AccessChain 435(ubo) 108
703: 19(fvec4) Load 702
704: 74(fvec3) VectorShuffle 703 703 0 1 2
705: 74(fvec3) Load 481(fragPos)
706: 74(fvec3) FSub 704 705
Store 696(V) 706
708: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 709 709 12 12
707: 74(fvec3) Load 696(V)
710: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 707
Store 696(V) 710
716: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 714 714 12 12
715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(lightCosInnerAngle) 49
Store 711(lightCosInnerAngle) 717
723: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 721 721 12 12
722: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 719 718(lightCosOuterAngle) 49
Store 718(lightCosOuterAngle) 724
730: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 728 728 12 12
729: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 726 725(lightRange) 49
Store 725(lightRange) 731
737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 735 735 12 12
736: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(dir) 49
738: 98(int) Load 654(i)
739: 678(ptr) AccessChain 435(ubo) 294 738 108
740: 19(fvec4) Load 739
741: 74(fvec3) VectorShuffle 740 740 0 1 2
742: 98(int) Load 654(i)
743: 678(ptr) AccessChain 435(ubo) 294 742 294
744: 19(fvec4) Load 743
745: 74(fvec3) VectorShuffle 744 744 0 1 2
746: 74(fvec3) FSub 741 745
747: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 746
Store 732(dir) 747
753: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 751 751 12 12
752: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 749 748(cosDir) 49
754: 74(fvec3) Load 670(L)
755: 74(fvec3) Load 732(dir)
756: 16(float) Dot 754 755
Store 748(cosDir) 756
762: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 760 760 12 12
761: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 758 757(spotEffect) 49
763: 16(float) Load 718(lightCosOuterAngle)
764: 16(float) Load 711(lightCosInnerAngle)
765: 16(float) Load 748(cosDir)
766: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 763 764 765
Store 757(spotEffect) 766
772: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 770 770 12 12
771: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 768 767(heightAttenuation) 49
773: 16(float) Load 725(lightRange)
774: 16(float) Load 685(dist)
775: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 773 198 774
Store 767(heightAttenuation) 775
781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 779 779 12 12
780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 777 776(NdotL) 49
782: 74(fvec3) Load 646(N)
783: 74(fvec3) Load 670(L)
784: 16(float) Dot 782 783
785: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 198 784
Store 776(NdotL) 785
791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 789 789 12 12
790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 787 786(diff) 49
792: 16(float) Load 776(NdotL)
793: 74(fvec3) CompositeConstruct 792 792 792
Store 786(diff) 793
799: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 797 797 12 12
798: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 795 794(R) 49
800: 74(fvec3) Load 670(L)
801: 74(fvec3) FNegate 800
802: 74(fvec3) Load 646(N)
803: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 801 802
Store 794(R) 803
809: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 807 807 12 12
808: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 805 804(NdotR) 49
810: 74(fvec3) Load 794(R)
811: 74(fvec3) Load 696(V)
812: 16(float) Dot 810 811
813: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 198 812
Store 804(NdotR) 813
819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 817 817 12 12
818: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 815 814(spec) 49
820: 16(float) Load 804(NdotR)
822: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 820 821
823: 25(ptr) AccessChain 518(albedo) 13
824: 16(float) Load 823
825: 16(float) FMul 822 824
827: 16(float) FMul 825 826
828: 74(fvec3) CompositeConstruct 827 827 827
Store 814(spec) 828
830: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 831 831 12 12
829: 74(fvec3) Load 786(diff)
832: 74(fvec3) Load 814(spec)
833: 74(fvec3) FAdd 829 832
834: 16(float) Load 757(spotEffect)
835: 74(fvec3) VectorTimesScalar 833 834
836: 16(float) Load 767(heightAttenuation)
837: 74(fvec3) VectorTimesScalar 835 836
838: 98(int) Load 654(i)
840: 678(ptr) AccessChain 435(ubo) 294 838 839
841: 19(fvec4) Load 840
842: 74(fvec3) VectorShuffle 841 841 0 1 2
843: 74(fvec3) FMul 837 842
844: 19(fvec4) Load 518(albedo)
845: 74(fvec3) VectorShuffle 844 844 0 1 2
846: 74(fvec3) FMul 843 845
847: 74(fvec3) Load 636(fragcolor)
848: 74(fvec3) FAdd 847 846
Store 636(fragcolor) 848
Branch 662
662: Label
850: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
851: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12
849: 98(int) Load 654(i)
852: 98(int) IAdd 849 294
Store 654(i) 852
Branch 659
661: Label
854: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
855: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 856 856 12 12
853: 530(ptr) AccessChain 435(ubo) 839
857: 98(int) Load 853
858: 141(bool) SGreaterThan 857 108
SelectionMerge 860 None
BranchConditional 858 859 860
859: Label
863: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 865 865 12 12
862: 74(fvec3) Load 636(fragcolor)
Store 861(param) 862
867: 74(fvec3) Load 481(fragPos)
Store 866(param) 867
868: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 861(param) 866(param)
Store 636(fragcolor) 868
Branch 860
860: Label
870: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96
871: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 872 872 12 12
869: 74(fvec3) Load 636(fragcolor)
873: 16(float) CompositeExtract 869 0
874: 16(float) CompositeExtract 869 1
875: 16(float) CompositeExtract 869 2
876: 19(fvec4) CompositeConstruct 873 874 875 117
Store 552(outFragColor) 876
877: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 878 878 12 12
Return
FunctionEnd
37(textureProj(vf4;f1;vf2;): 16(float) Function None 32
34(P): 22(ptr) FunctionParameter
35(layer): 25(ptr) FunctionParameter
36(offset): 30(ptr) FunctionParameter
38: Label
112(shadow): 25(ptr) Variable Function
118(shadowCoord): 22(ptr) Variable Function
162(dist): 25(ptr) Variable Function
50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40
51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 43 43 12 12
48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 34(P) 49
54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 35(layer) 49
57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 36(offset) 49
111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 37(textureProj(vf4;f1;vf2;)
116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 114 114 12 12
115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(shadow) 49
Store 112(shadow) 117
123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 121 121 12 12
122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(shadowCoord) 49
124: 19(fvec4) Load 34(P)
125: 25(ptr) AccessChain 34(P) 13
126: 16(float) Load 125
127: 19(fvec4) CompositeConstruct 126 126 126 126
128: 19(fvec4) FDiv 124 127
Store 118(shadowCoord) 128
130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 131 131 12 12
129: 19(fvec4) Load 118(shadowCoord)
132: 27(fvec2) VectorShuffle 129 129 0 1
134: 27(fvec2) VectorTimesScalar 132 133
135: 27(fvec2) CompositeConstruct 133 133
136: 27(fvec2) FAdd 134 135
137: 25(ptr) AccessChain 118(shadowCoord) 12
138: 16(float) CompositeExtract 136 0
Store 137 138
139: 25(ptr) AccessChain 118(shadowCoord) 45
140: 16(float) CompositeExtract 136 1
Store 139 140
145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12
144: 25(ptr) AccessChain 118(shadowCoord) 28
147: 16(float) Load 144
149: 141(bool) FOrdGreaterThan 147 148
SelectionMerge 151 None
BranchConditional 149 150 151
150: Label
153: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40
154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12
152: 25(ptr) AccessChain 118(shadowCoord) 28
155: 16(float) Load 152
156: 141(bool) FOrdLessThan 155 117
Branch 151
151: Label
157: 141(bool) Phi 149 38 156 150
160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40
161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12
SelectionMerge 159 None
BranchConditional 157 158 159
158: Label
167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40
168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 165 165 12 12
166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 163 162(dist) 49
183: 174 Load 180(samplerShadowMap)
184: 19(fvec4) Load 118(shadowCoord)
185: 27(fvec2) VectorShuffle 184 184 0 1
186: 27(fvec2) Load 36(offset)
187: 27(fvec2) FAdd 185 186
188: 16(float) Load 35(layer)
189: 16(float) CompositeExtract 187 0
190: 16(float) CompositeExtract 187 1
191: 74(fvec3) CompositeConstruct 189 190 188
192: 19(fvec4) ImageSampleImplicitLod 183 191
193: 16(float) CompositeExtract 192 0
Store 162(dist) 193
195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 196 196 12 12
194: 25(ptr) AccessChain 118(shadowCoord) 13
197: 16(float) Load 194
199: 141(bool) FOrdGreaterThan 197 198
SelectionMerge 201 None
BranchConditional 199 200 201
200: Label
203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40
204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 196 196 12 12
202: 16(float) Load 162(dist)
205: 25(ptr) AccessChain 118(shadowCoord) 28
206: 16(float) Load 205
207: 141(bool) FOrdLessThan 202 206
Branch 201
201: Label
208: 141(bool) Phi 199 158 207 200
211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40
212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 196 196 12 12
SelectionMerge 210 None
BranchConditional 208 209 210
209: Label
214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40
215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 216 216 12 12
Store 112(shadow) 213
Branch 210
210: Label
Branch 159
159: Label
218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40
219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 220 220 12 12
217: 16(float) Load 112(shadow)
ReturnValue 217
FunctionEnd
62(filterPCF(vf4;f1;): 16(float) Function None 58
60(sc): 22(ptr) FunctionParameter
61(layer): 25(ptr) FunctionParameter
63: Label
231(texDim): 229(ptr) Variable Function
243(scale): 25(ptr) Variable Function
250(dx): 25(ptr) Variable Function
264(dy): 25(ptr) Variable Function
276(shadowFactor): 25(ptr) Variable Function
282(count): 258(ptr) Variable Function
288(range): 258(ptr) Variable Function
295(x): 258(ptr) Variable Function
315(y): 258(ptr) Variable Function
348(param): 22(ptr) Variable Function
350(param): 25(ptr) Variable Function
352(param): 30(ptr) Variable Function
70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 66 66 12 12
69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 60(sc) 49
73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 49
226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;)
236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 234 234 12 12
235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 232 231(texDim) 49
237: 174 Load 180(samplerShadowMap)
238: 169 Image 237
241: 239(ivec3) ImageQuerySizeLod 238 108
242: 227(ivec2) VectorShuffle 241 241 0 1
Store 231(texDim) 242
248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 246 246 12 12
247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 244 243(scale) 49
Store 243(scale) 249
255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 253 253 12 12
254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 251 250(dx) 49
256: 16(float) Load 243(scale)
257: 16(float) FMul 256 117
260: 258(ptr) AccessChain 231(texDim) 12
261: 98(int) Load 260
262: 16(float) ConvertSToF 261
263: 16(float) FDiv 257 262
Store 250(dx) 263
269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 267 267 12 12
268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(dy) 49
270: 16(float) Load 243(scale)
271: 16(float) FMul 270 117
272: 258(ptr) AccessChain 231(texDim) 45
273: 98(int) Load 272
274: 16(float) ConvertSToF 273
275: 16(float) FDiv 271 274
Store 264(dy) 275
281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 279 279 12 12
280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(shadowFactor) 49
Store 276(shadowFactor) 198
287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 285 285 12 12
286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 283 282(count) 49
Store 282(count) 108
293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12
292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 289 288(range) 49
Store 288(range) 294
300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 298 298 12 12
299: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 296 295(x) 49
301: 98(int) Load 288(range)
302: 98(int) SNegate 301
Store 295(x) 302
Branch 303
303: Label
307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 298 298 12 12
LoopMerge 305 306 None
Branch 309
309: Label
311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 298 298 12 12
310: 98(int) Load 295(x)
313: 98(int) Load 288(range)
314: 141(bool) SLessThanEqual 310 313
BranchConditional 314 304 305
304: Label
320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 318 318 12 12
319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 316 315(y) 49
322: 98(int) Load 288(range)
323: 98(int) SNegate 322
Store 315(y) 323
Branch 324
324: Label
328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 318 318 12 12
LoopMerge 326 327 None
Branch 330
330: Label
332: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 318 318 12 12
331: 98(int) Load 315(y)
334: 98(int) Load 288(range)
335: 141(bool) SLessThanEqual 331 334
BranchConditional 335 325 326
325: Label
337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 339 339 12 12
336: 16(float) Load 250(dx)
340: 98(int) Load 295(x)
341: 16(float) ConvertSToF 340
342: 16(float) FMul 336 341
343: 16(float) Load 264(dy)
344: 98(int) Load 315(y)
345: 16(float) ConvertSToF 344
346: 16(float) FMul 343 345
347: 27(fvec2) CompositeConstruct 342 346
349: 19(fvec4) Load 60(sc)
Store 348(param) 349
351: 16(float) Load 61(layer)
Store 350(param) 351
Store 352(param) 347
353: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 348(param) 350(param) 352(param)
354: 16(float) Load 276(shadowFactor)
355: 16(float) FAdd 354 353
Store 276(shadowFactor) 355
357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 358 358 12 12
356: 98(int) Load 282(count)
359: 98(int) IAdd 356 294
Store 282(count) 359
Branch 327
327: Label
361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
362: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 318 318 12 12
360: 98(int) Load 315(y)
363: 98(int) IAdd 360 294
Store 315(y) 363
Branch 324
326: Label
Branch 306
306: Label
365: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 298 298 12 12
364: 98(int) Load 295(x)
367: 98(int) IAdd 364 294
Store 295(x) 367
Branch 303
305: Label
369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65
370: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 371 371 12 12
368: 16(float) Load 276(shadowFactor)
372: 98(int) Load 282(count)
373: 16(float) ConvertSToF 372
374: 16(float) FDiv 368 373
ReturnValue 374
FunctionEnd
82(shadow(vf3;vf3;): 74(fvec3) Function None 78
80(fragcolor): 76(ptr) FunctionParameter
81(fragpos): 76(ptr) FunctionParameter
83: Label
381(i): 258(ptr) Variable Function
399(shadowClip): 22(ptr) Variable Function
449(shadowFactor): 25(ptr) Variable Function
456(param): 22(ptr) Variable Function
458(param): 25(ptr) Variable Function
90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85
91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 86 86 12 12
89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 80(fragcolor) 49
94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragpos) 49
380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;)
386: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 384 384 12 12
385: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 382 381(i) 49
Store 381(i) 108
Branch 387
387: Label
391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85
392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 384 384 12 12
LoopMerge 389 390 None
Branch 393
393: Label
395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85
396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 384 384 12 12
394: 98(int) Load 381(i)
398: 141(bool) SLessThan 394 397
BranchConditional 398 388 389
388: Label
404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85
405: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 402 402 12 12
403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 400 399(shadowClip) 49
438: 98(int) Load 381(i)
441: 439(ptr) AccessChain 435(ubo) 294 438 397
442: 406 Load 441
443: 74(fvec3) Load 81(fragpos)
444: 16(float) CompositeExtract 443 0
445: 16(float) CompositeExtract 443 1
446: 16(float) CompositeExtract 443 2
447: 19(fvec4) CompositeConstruct 444 445 446 117
448: 19(fvec4) MatrixTimesVector 442 447
Store 399(shadowClip) 448
453: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 451 451 12 12
452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 450 449(shadowFactor) 49
454: 98(int) Load 381(i)
455: 16(float) ConvertSToF 454
457: 19(fvec4) Load 399(shadowClip)
Store 456(param) 457
Store 458(param) 455
459: 16(float) FunctionCall 62(filterPCF(vf4;f1;) 456(param) 458(param)
Store 449(shadowFactor) 459
461: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 462 462 12 12
460: 16(float) Load 449(shadowFactor)
463: 74(fvec3) Load 80(fragcolor)
464: 74(fvec3) VectorTimesScalar 463 460
Store 80(fragcolor) 464
Branch 390
390: Label
466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85
467: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 384 384 12 12
465: 98(int) Load 381(i)
468: 98(int) IAdd 465 294
Store 381(i) 468
Branch 387
389: Label
470: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85
471: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 472 472 12 12
469: 74(fvec3) Load 80(fragcolor)
ReturnValue 469
FunctionEnd