SpirV.Disassembler result
Shader "Ballistic/UI/BloodSplatter" {
	Properties {
		_MainTex ("Base (RGB)", 2D) = "white" {}
	}
	SubShader {
		Tags { "RenderType" = "Opaque" }
		Pass {
			Tags { "RenderType" = "Opaque" }
			Blend DstColor SrcColor, DstColor SrcColor
			ZTest Always
			ZWrite Off
			Cull Off
			GpuProgramID 7289
			Program "vp" {
				SubProgram "d3d11 hw_tier00 " {
					"vs_4_0

					//ShaderDXExporter_Disassembler
					//
					// Generated by
					//
					//
					//
					// Input signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// POSITION                 0   xyzw        0     NONE   float   xyz
					// COLOR                    0   xyzw        1     NONE   float   xyzw
					// TEXCOORD                 0   xy          2     NONE   float   xy
					//
					//
					// Output signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_POSITION              0   xyzw        0      POS   float   xyzw
					// TEXCOORD                 0   xy          1     NONE   float   xy
					// COLOR                    0   xyzw        2     NONE   float   xyzw
					//
					vs_4_0
					dcl_constantbuffer CB0[3], immediateIndexed
					dcl_constantbuffer CB1[4], immediateIndexed
					dcl_constantbuffer CB2[21], immediateIndexed
					dcl_input v0.xyz
					dcl_input v1.xyzw
					dcl_input v2.xy
					dcl_output_siv o0.xyzw, position
					dcl_output o1.xy
					dcl_output o2.xyzw
					dcl_temps 2
					mul r0.xyzw, v0.yyyy, cb1[1].xyzw
					mad r0.xyzw, cb1[0].xyzw, v0.xxxx, r0.xyzw
					mad r0.xyzw, cb1[2].xyzw, v0.zzzz, r0.xyzw
					add r0.xyzw, r0.xyzw, cb1[3].xyzw
					mul r1.xyzw, r0.yyyy, cb2[18].xyzw
					mad r1.xyzw, cb2[17].xyzw, r0.xxxx, r1.xyzw
					mad r1.xyzw, cb2[19].xyzw, r0.zzzz, r1.xyzw
					mad o0.xyzw, cb2[20].xyzw, r0.wwww, r1.xyzw
					mad o1.xy, v2.xyxx, cb0[2].xyxx, cb0[2].zwzz
					mov o2.xyzw, v1.xyzw
					ret
"
				}
				SubProgram "d3d11 hw_tier01 " {
					"vs_4_0

					//ShaderDXExporter_Disassembler
					//
					// Generated by
					//
					//
					//
					// Input signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// POSITION                 0   xyzw        0     NONE   float   xyz
					// COLOR                    0   xyzw        1     NONE   float   xyzw
					// TEXCOORD                 0   xy          2     NONE   float   xy
					//
					//
					// Output signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_POSITION              0   xyzw        0      POS   float   xyzw
					// TEXCOORD                 0   xy          1     NONE   float   xy
					// COLOR                    0   xyzw        2     NONE   float   xyzw
					//
					vs_4_0
					dcl_constantbuffer CB0[3], immediateIndexed
					dcl_constantbuffer CB1[4], immediateIndexed
					dcl_constantbuffer CB2[21], immediateIndexed
					dcl_input v0.xyz
					dcl_input v1.xyzw
					dcl_input v2.xy
					dcl_output_siv o0.xyzw, position
					dcl_output o1.xy
					dcl_output o2.xyzw
					dcl_temps 2
					mul r0.xyzw, v0.yyyy, cb1[1].xyzw
					mad r0.xyzw, cb1[0].xyzw, v0.xxxx, r0.xyzw
					mad r0.xyzw, cb1[2].xyzw, v0.zzzz, r0.xyzw
					add r0.xyzw, r0.xyzw, cb1[3].xyzw
					mul r1.xyzw, r0.yyyy, cb2[18].xyzw
					mad r1.xyzw, cb2[17].xyzw, r0.xxxx, r1.xyzw
					mad r1.xyzw, cb2[19].xyzw, r0.zzzz, r1.xyzw
					mad o0.xyzw, cb2[20].xyzw, r0.wwww, r1.xyzw
					mad o1.xy, v2.xyxx, cb0[2].xyxx, cb0[2].zwzz
					mov o2.xyzw, v1.xyzw
					ret
"
				}
				SubProgram "d3d11 hw_tier02 " {
					"vs_4_0

					//ShaderDXExporter_Disassembler
					//
					// Generated by
					//
					//
					//
					// Input signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// POSITION                 0   xyzw        0     NONE   float   xyz
					// COLOR                    0   xyzw        1     NONE   float   xyzw
					// TEXCOORD                 0   xy          2     NONE   float   xy
					//
					//
					// Output signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_POSITION              0   xyzw        0      POS   float   xyzw
					// TEXCOORD                 0   xy          1     NONE   float   xy
					// COLOR                    0   xyzw        2     NONE   float   xyzw
					//
					vs_4_0
					dcl_constantbuffer CB0[3], immediateIndexed
					dcl_constantbuffer CB1[4], immediateIndexed
					dcl_constantbuffer CB2[21], immediateIndexed
					dcl_input v0.xyz
					dcl_input v1.xyzw
					dcl_input v2.xy
					dcl_output_siv o0.xyzw, position
					dcl_output o1.xy
					dcl_output o2.xyzw
					dcl_temps 2
					mul r0.xyzw, v0.yyyy, cb1[1].xyzw
					mad r0.xyzw, cb1[0].xyzw, v0.xxxx, r0.xyzw
					mad r0.xyzw, cb1[2].xyzw, v0.zzzz, r0.xyzw
					add r0.xyzw, r0.xyzw, cb1[3].xyzw
					mul r1.xyzw, r0.yyyy, cb2[18].xyzw
					mad r1.xyzw, cb2[17].xyzw, r0.xxxx, r1.xyzw
					mad r1.xyzw, cb2[19].xyzw, r0.zzzz, r1.xyzw
					mad o0.xyzw, cb2[20].xyzw, r0.wwww, r1.xyzw
					mad o1.xy, v2.xyxx, cb0[2].xyxx, cb0[2].zwzz
					mov o2.xyzw, v1.xyzw
					ret
"
				}
				SubProgram "glcore hw_tier00 " {
					"!!GL3x
					//ShaderGLESExporter
					#ifdef VERTEX
					#version 150
					#extension GL_ARB_explicit_attrib_location : require
					#ifdef GL_ARB_shader_bit_encoding
					#extension GL_ARB_shader_bit_encoding : enable
					#endif

					uniform 	vec4 hlslcc_mtx4x4unity_ObjectToWorld[4];
					uniform 	vec4 hlslcc_mtx4x4unity_MatrixVP[4];
					uniform 	vec4 _MainTex_ST;
					in  vec4 in_POSITION0;
					in  vec4 in_COLOR0;
					in  vec2 in_TEXCOORD0;
					out vec2 vs_TEXCOORD0;
					out vec4 vs_COLOR0;
					vec4 u_xlat0;
					vec4 u_xlat1;
					void main()
					{
					    u_xlat0 = in_POSITION0.yyyy * hlslcc_mtx4x4unity_ObjectToWorld[1];
					    u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0] * in_POSITION0.xxxx + u_xlat0;
					    u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[2] * in_POSITION0.zzzz + u_xlat0;
					    u_xlat0 = u_xlat0 + hlslcc_mtx4x4unity_ObjectToWorld[3];
					    u_xlat1 = u_xlat0.yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
					    u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[0] * u_xlat0.xxxx + u_xlat1;
					    u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[2] * u_xlat0.zzzz + u_xlat1;
					    gl_Position = hlslcc_mtx4x4unity_MatrixVP[3] * u_xlat0.wwww + u_xlat1;
					    vs_TEXCOORD0.xy = in_TEXCOORD0.xy * _MainTex_ST.xy + _MainTex_ST.zw;
					    vs_COLOR0 = in_COLOR0;
					    return;
					}

					#endif
					#ifdef FRAGMENT
					#version 150
					#extension GL_ARB_explicit_attrib_location : require
					#ifdef GL_ARB_shader_bit_encoding
					#extension GL_ARB_shader_bit_encoding : enable
					#endif

					uniform  sampler2D _MainTex;
					in  vec2 vs_TEXCOORD0;
					in  vec4 vs_COLOR0;
					layout(location = 0) out vec4 SV_Target0;
					vec3 u_xlat16_0;
					vec4 u_xlat10_0;
					float u_xlat1;
					float u_xlat6;
					void main()
					{
					    u_xlat10_0 = texture(_MainTex, vs_TEXCOORD0.xy);
					    u_xlat6 = u_xlat10_0.w + vs_COLOR0.x;
					    u_xlat16_0.xyz = u_xlat10_0.xyz + vec3(-0.5, -0.5, -0.5);
					    u_xlat6 = u_xlat6 * u_xlat6;
					    u_xlat1 = u_xlat6 * u_xlat6;
					    u_xlat6 = u_xlat6 * u_xlat1 + -1.0;
					    u_xlat6 = max(u_xlat6, 0.0);
					    u_xlat6 = min(u_xlat6, vs_COLOR0.w);
					    SV_Target0.xyz = u_xlat16_0.xyz * vec3(u_xlat6) + vec3(0.5, 0.5, 0.5);
					    SV_Target0.w = u_xlat6;
					    return;
					}

					#endif"
				}
				SubProgram "glcore hw_tier01 " {
					"!!GL3x
					//ShaderGLESExporter
					#ifdef VERTEX
					#version 150
					#extension GL_ARB_explicit_attrib_location : require
					#ifdef GL_ARB_shader_bit_encoding
					#extension GL_ARB_shader_bit_encoding : enable
					#endif

					uniform 	vec4 hlslcc_mtx4x4unity_ObjectToWorld[4];
					uniform 	vec4 hlslcc_mtx4x4unity_MatrixVP[4];
					uniform 	vec4 _MainTex_ST;
					in  vec4 in_POSITION0;
					in  vec4 in_COLOR0;
					in  vec2 in_TEXCOORD0;
					out vec2 vs_TEXCOORD0;
					out vec4 vs_COLOR0;
					vec4 u_xlat0;
					vec4 u_xlat1;
					void main()
					{
					    u_xlat0 = in_POSITION0.yyyy * hlslcc_mtx4x4unity_ObjectToWorld[1];
					    u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0] * in_POSITION0.xxxx + u_xlat0;
					    u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[2] * in_POSITION0.zzzz + u_xlat0;
					    u_xlat0 = u_xlat0 + hlslcc_mtx4x4unity_ObjectToWorld[3];
					    u_xlat1 = u_xlat0.yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
					    u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[0] * u_xlat0.xxxx + u_xlat1;
					    u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[2] * u_xlat0.zzzz + u_xlat1;
					    gl_Position = hlslcc_mtx4x4unity_MatrixVP[3] * u_xlat0.wwww + u_xlat1;
					    vs_TEXCOORD0.xy = in_TEXCOORD0.xy * _MainTex_ST.xy + _MainTex_ST.zw;
					    vs_COLOR0 = in_COLOR0;
					    return;
					}

					#endif
					#ifdef FRAGMENT
					#version 150
					#extension GL_ARB_explicit_attrib_location : require
					#ifdef GL_ARB_shader_bit_encoding
					#extension GL_ARB_shader_bit_encoding : enable
					#endif

					uniform  sampler2D _MainTex;
					in  vec2 vs_TEXCOORD0;
					in  vec4 vs_COLOR0;
					layout(location = 0) out vec4 SV_Target0;
					vec3 u_xlat16_0;
					vec4 u_xlat10_0;
					float u_xlat1;
					float u_xlat6;
					void main()
					{
					    u_xlat10_0 = texture(_MainTex, vs_TEXCOORD0.xy);
					    u_xlat6 = u_xlat10_0.w + vs_COLOR0.x;
					    u_xlat16_0.xyz = u_xlat10_0.xyz + vec3(-0.5, -0.5, -0.5);
					    u_xlat6 = u_xlat6 * u_xlat6;
					    u_xlat1 = u_xlat6 * u_xlat6;
					    u_xlat6 = u_xlat6 * u_xlat1 + -1.0;
					    u_xlat6 = max(u_xlat6, 0.0);
					    u_xlat6 = min(u_xlat6, vs_COLOR0.w);
					    SV_Target0.xyz = u_xlat16_0.xyz * vec3(u_xlat6) + vec3(0.5, 0.5, 0.5);
					    SV_Target0.w = u_xlat6;
					    return;
					}

					#endif"
				}
				SubProgram "glcore hw_tier02 " {
					"!!GL3x
					//ShaderGLESExporter
					#ifdef VERTEX
					#version 150
					#extension GL_ARB_explicit_attrib_location : require
					#ifdef GL_ARB_shader_bit_encoding
					#extension GL_ARB_shader_bit_encoding : enable
					#endif

					uniform 	vec4 hlslcc_mtx4x4unity_ObjectToWorld[4];
					uniform 	vec4 hlslcc_mtx4x4unity_MatrixVP[4];
					uniform 	vec4 _MainTex_ST;
					in  vec4 in_POSITION0;
					in  vec4 in_COLOR0;
					in  vec2 in_TEXCOORD0;
					out vec2 vs_TEXCOORD0;
					out vec4 vs_COLOR0;
					vec4 u_xlat0;
					vec4 u_xlat1;
					void main()
					{
					    u_xlat0 = in_POSITION0.yyyy * hlslcc_mtx4x4unity_ObjectToWorld[1];
					    u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0] * in_POSITION0.xxxx + u_xlat0;
					    u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[2] * in_POSITION0.zzzz + u_xlat0;
					    u_xlat0 = u_xlat0 + hlslcc_mtx4x4unity_ObjectToWorld[3];
					    u_xlat1 = u_xlat0.yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
					    u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[0] * u_xlat0.xxxx + u_xlat1;
					    u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[2] * u_xlat0.zzzz + u_xlat1;
					    gl_Position = hlslcc_mtx4x4unity_MatrixVP[3] * u_xlat0.wwww + u_xlat1;
					    vs_TEXCOORD0.xy = in_TEXCOORD0.xy * _MainTex_ST.xy + _MainTex_ST.zw;
					    vs_COLOR0 = in_COLOR0;
					    return;
					}

					#endif
					#ifdef FRAGMENT
					#version 150
					#extension GL_ARB_explicit_attrib_location : require
					#ifdef GL_ARB_shader_bit_encoding
					#extension GL_ARB_shader_bit_encoding : enable
					#endif

					uniform  sampler2D _MainTex;
					in  vec2 vs_TEXCOORD0;
					in  vec4 vs_COLOR0;
					layout(location = 0) out vec4 SV_Target0;
					vec3 u_xlat16_0;
					vec4 u_xlat10_0;
					float u_xlat1;
					float u_xlat6;
					void main()
					{
					    u_xlat10_0 = texture(_MainTex, vs_TEXCOORD0.xy);
					    u_xlat6 = u_xlat10_0.w + vs_COLOR0.x;
					    u_xlat16_0.xyz = u_xlat10_0.xyz + vec3(-0.5, -0.5, -0.5);
					    u_xlat6 = u_xlat6 * u_xlat6;
					    u_xlat1 = u_xlat6 * u_xlat6;
					    u_xlat6 = u_xlat6 * u_xlat1 + -1.0;
					    u_xlat6 = max(u_xlat6, 0.0);
					    u_xlat6 = min(u_xlat6, vs_COLOR0.w);
					    SV_Target0.xyz = u_xlat16_0.xyz * vec3(u_xlat6) + vec3(0.5, 0.5, 0.5);
					    SV_Target0.w = u_xlat6;
					    return;
					}

					#endif"
				}
				SubProgram "vulkan hw_tier00 " {
					"spirv

					//ShaderVulkanExporter
					; SPIR-V
					; Version: 1.0
					; Generator: Khronos Glslang Reference Front End; 1
					; Bound: 105
					; Schema: 0
					                                                     OpCapability Shader
					                                              %1 = OpExtInstImport "GLSL.std.450"
					                                                     OpMemoryModel Logical GLSL450
					                                                     OpEntryPoint Vertex %4 "main" %11 %72 %84 %86 %96 %97
					                                                     OpName vs_TEXCOORD0 "vs_TEXCOORD0"
					                                                     OpDecorate %11 Location 11
					                                                     OpDecorate %16 ArrayStride 16
					                                                     OpDecorate %17 ArrayStride 17
					                                                     OpMemberDecorate %18 0 Offset 18
					                                                     OpMemberDecorate %18 1 Offset 18
					                                                     OpMemberDecorate %18 2 Offset 18
					                                                     OpDecorate %18 Block
					                                                     OpDecorate %20 DescriptorSet 20
					                                                     OpDecorate %20 Binding 20
					                                                     OpMemberDecorate %70 0 BuiltIn 70
					                                                     OpMemberDecorate %70 1 BuiltIn 70
					                                                     OpMemberDecorate %70 2 BuiltIn 70
					                                                     OpDecorate %70 Block
					                                                     OpDecorate vs_TEXCOORD0 Location 84
					                                                     OpDecorate %86 Location 86
					                                                     OpDecorate %96 RelaxedPrecision
					                                                     OpDecorate %96 Location 96
					                                                     OpDecorate %97 RelaxedPrecision
					                                                     OpDecorate %97 Location 97
					                                                     OpDecorate %98 RelaxedPrecision
					                                              %2 = OpTypeVoid
					                                              %3 = OpTypeFunction %2
					                                              %6 = OpTypeFloat 32
					                                              %7 = OpTypeVector %6 4
					                                              %8 = OpTypePointer Private %7
					                               Private f32_4* %9 = OpVariable Private
					                                             %10 = OpTypePointer Input %7
					                                Input f32_4* %11 = OpVariable Input
					                                             %14 = OpTypeInt 32 0
					                                         u32 %15 = OpConstant 4
					                                             %16 = OpTypeArray %7 %15
					                                             %17 = OpTypeArray %7 %15
					                                             %18 = OpTypeStruct %16 %17 %7
					                                             %19 = OpTypePointer Uniform %18
					Uniform struct {f32_4[4]; f32_4[4]; f32_4;}* %20 = OpVariable Uniform
					                                             %21 = OpTypeInt 32 1
					                                         i32 %22 = OpConstant 0
					                                         i32 %23 = OpConstant 1
					                                             %24 = OpTypePointer Uniform %7
					                                         i32 %35 = OpConstant 2
					                                         i32 %44 = OpConstant 3
					                              Private f32_4* %48 = OpVariable Private
					                                         u32 %68 = OpConstant 1
					                                             %69 = OpTypeArray %6 %68
					                                             %70 = OpTypeStruct %7 %6 %69
					                                             %71 = OpTypePointer Output %70
					        Output struct {f32_4; f32; f32[1];}* %72 = OpVariable Output
					                                             %80 = OpTypePointer Output %7
					                                             %82 = OpTypeVector %6 2
					                                             %83 = OpTypePointer Output %82
					                      Output f32_2* vs_TEXCOORD0 = OpVariable Output
					                                             %85 = OpTypePointer Input %82
					                                Input f32_2* %86 = OpVariable Input
					                               Output f32_4* %96 = OpVariable Output
					                                Input f32_4* %97 = OpVariable Input
					                                             %99 = OpTypePointer Output %6
					                                         void %4 = OpFunction None %3
					                                              %5 = OpLabel
					                                       f32_4 %12 = OpLoad %11
					                                       f32_4 %13 = OpVectorShuffle %12 %12 1 1 1 1
					                              Uniform f32_4* %25 = OpAccessChain %20 %22 %23
					                                       f32_4 %26 = OpLoad %25
					                                       f32_4 %27 = OpFMul %13 %26
					                                                     OpStore %9 %27
					                              Uniform f32_4* %28 = OpAccessChain %20 %22 %22
					                                       f32_4 %29 = OpLoad %28
					                                       f32_4 %30 = OpLoad %11
					                                       f32_4 %31 = OpVectorShuffle %30 %30 0 0 0 0
					                                       f32_4 %32 = OpFMul %29 %31
					                                       f32_4 %33 = OpLoad %9
					                                       f32_4 %34 = OpFAdd %32 %33
					                                                     OpStore %9 %34
					                              Uniform f32_4* %36 = OpAccessChain %20 %22 %35
					                                       f32_4 %37 = OpLoad %36
					                                       f32_4 %38 = OpLoad %11
					                                       f32_4 %39 = OpVectorShuffle %38 %38 2 2 2 2
					                                       f32_4 %40 = OpFMul %37 %39
					                                       f32_4 %41 = OpLoad %9
					                                       f32_4 %42 = OpFAdd %40 %41
					                                                     OpStore %9 %42
					                                       f32_4 %43 = OpLoad %9
					                              Uniform f32_4* %45 = OpAccessChain %20 %22 %44
					                                       f32_4 %46 = OpLoad %45
					                                       f32_4 %47 = OpFAdd %43 %46
					                                                     OpStore %9 %47
					                                       f32_4 %49 = OpLoad %9
					                                       f32_4 %50 = OpVectorShuffle %49 %49 1 1 1 1
					                              Uniform f32_4* %51 = OpAccessChain %20 %23 %23
					                                       f32_4 %52 = OpLoad %51
					                                       f32_4 %53 = OpFMul %50 %52
					                                                     OpStore %48 %53
					                              Uniform f32_4* %54 = OpAccessChain %20 %23 %22
					                                       f32_4 %55 = OpLoad %54
					                                       f32_4 %56 = OpLoad %9
					                                       f32_4 %57 = OpVectorShuffle %56 %56 0 0 0 0
					                                       f32_4 %58 = OpFMul %55 %57
					                                       f32_4 %59 = OpLoad %48
					                                       f32_4 %60 = OpFAdd %58 %59
					                                                     OpStore %48 %60
					                              Uniform f32_4* %61 = OpAccessChain %20 %23 %35
					                                       f32_4 %62 = OpLoad %61
					                                       f32_4 %63 = OpLoad %9
					                                       f32_4 %64 = OpVectorShuffle %63 %63 2 2 2 2
					                                       f32_4 %65 = OpFMul %62 %64
					                                       f32_4 %66 = OpLoad %48
					                                       f32_4 %67 = OpFAdd %65 %66
					                                                     OpStore %48 %67
					                              Uniform f32_4* %73 = OpAccessChain %20 %23 %44
					                                       f32_4 %74 = OpLoad %73
					                                       f32_4 %75 = OpLoad %9
					                                       f32_4 %76 = OpVectorShuffle %75 %75 3 3 3 3
					                                       f32_4 %77 = OpFMul %74 %76
					                                       f32_4 %78 = OpLoad %48
					                                       f32_4 %79 = OpFAdd %77 %78
					                               Output f32_4* %81 = OpAccessChain %72 %22
					                                                     OpStore %81 %79
					                                       f32_2 %87 = OpLoad %86
					                              Uniform f32_4* %88 = OpAccessChain %20 %35
					                                       f32_4 %89 = OpLoad %88
					                                       f32_2 %90 = OpVectorShuffle %89 %89 0 1
					                                       f32_2 %91 = OpFMul %87 %90
					                              Uniform f32_4* %92 = OpAccessChain %20 %35
					                                       f32_4 %93 = OpLoad %92
					                                       f32_2 %94 = OpVectorShuffle %93 %93 2 3
					                                       f32_2 %95 = OpFAdd %91 %94
					                                                     OpStore vs_TEXCOORD0 %95
					                                       f32_4 %98 = OpLoad %97
					                                                     OpStore %96 %98
					                                Output f32* %100 = OpAccessChain %72 %22 %68
					                                        f32 %101 = OpLoad %100
					                                        f32 %102 = OpFNegate %101
					                                Output f32* %103 = OpAccessChain %72 %22 %68
					                                                     OpStore %103 %102
					                                                     OpReturn
					                                                     OpFunctionEnd
					//ShaderVulkanExporter
					; SPIR-V
					; Version: 1.0
					; Generator: Khronos Glslang Reference Front End; 1
					; Bound: 80
					; Schema: 0
					                                             OpCapability Shader
					                                      %1 = OpExtInstImport "GLSL.std.450"
					                                             OpMemoryModel Logical GLSL450
					                                             OpEntryPoint Fragment %4 "main" %22 %32 %66
					                                             OpExecutionMode %4 OriginUpperLeft
					                                             OpName vs_TEXCOORD0 "vs_TEXCOORD0"
					                                             OpDecorate %9 RelaxedPrecision
					                                             OpDecorate %12 RelaxedPrecision
					                                             OpDecorate %12 DescriptorSet 12
					                                             OpDecorate %12 Binding 12
					                                             OpDecorate %13 RelaxedPrecision
					                                             OpDecorate %16 RelaxedPrecision
					                                             OpDecorate %16 DescriptorSet 16
					                                             OpDecorate %16 Binding 16
					                                             OpDecorate %17 RelaxedPrecision
					                                             OpDecorate vs_TEXCOORD0 Location 22
					                                             OpDecorate %26 RelaxedPrecision
					                                             OpDecorate %30 RelaxedPrecision
					                                             OpDecorate %32 RelaxedPrecision
					                                             OpDecorate %32 Location 32
					                                             OpDecorate %36 RelaxedPrecision
					                                             OpDecorate %37 RelaxedPrecision
					                                             OpDecorate %40 RelaxedPrecision
					                                             OpDecorate %41 RelaxedPrecision
					                                             OpDecorate %42 RelaxedPrecision
					                                             OpDecorate %45 RelaxedPrecision
					                                             OpDecorate %46 RelaxedPrecision
					                                             OpDecorate %47 RelaxedPrecision
					                                             OpDecorate %48 RelaxedPrecision
					                                             OpDecorate %49 RelaxedPrecision
					                                             OpDecorate %50 RelaxedPrecision
					                                             OpDecorate %51 RelaxedPrecision
					                                             OpDecorate %52 RelaxedPrecision
					                                             OpDecorate %53 RelaxedPrecision
					                                             OpDecorate %54 RelaxedPrecision
					                                             OpDecorate %55 RelaxedPrecision
					                                             OpDecorate %57 RelaxedPrecision
					                                             OpDecorate %58 RelaxedPrecision
					                                             OpDecorate %60 RelaxedPrecision
					                                             OpDecorate %61 RelaxedPrecision
					                                             OpDecorate %63 RelaxedPrecision
					                                             OpDecorate %64 RelaxedPrecision
					                                             OpDecorate %66 Location 66
					                                             OpDecorate %67 RelaxedPrecision
					                                             OpDecorate %68 RelaxedPrecision
					                                             OpDecorate %69 RelaxedPrecision
					                                             OpDecorate %70 RelaxedPrecision
					                                             OpDecorate %73 RelaxedPrecision
					                                             OpDecorate %76 RelaxedPrecision
					                                      %2 = OpTypeVoid
					                                      %3 = OpTypeFunction %2
					                                      %6 = OpTypeFloat 32
					                                      %7 = OpTypeVector %6 4
					                                      %8 = OpTypePointer Private %7
					                       Private f32_4* %9 = OpVariable Private
					                                     %10 = OpTypeImage %6 Dim2D 0 0 0 1 Unknown
					                                     %11 = OpTypePointer UniformConstant %10
					UniformConstant read_only Texture2D* %12 = OpVariable UniformConstant
					                                     %14 = OpTypeSampler
					                                     %15 = OpTypePointer UniformConstant %14
					            UniformConstant sampler* %16 = OpVariable UniformConstant
					                                     %18 = OpTypeSampledImage %10
					                                     %20 = OpTypeVector %6 2
					                                     %21 = OpTypePointer Input %20
					               Input f32_2* vs_TEXCOORD0 = OpVariable Input
					                                     %25 = OpTypePointer Private %6
					                        Private f32* %26 = OpVariable Private
					                                     %27 = OpTypeInt 32 0
					                                 u32 %28 = OpConstant 3
					                                     %31 = OpTypePointer Input %7
					                        Input f32_4* %32 = OpVariable Input
					                                 u32 %33 = OpConstant 0
					                                     %34 = OpTypePointer Input %6
					                                     %38 = OpTypeVector %6 3
					                                     %39 = OpTypePointer Private %38
					                      Private f32_3* %40 = OpVariable Private
					                                 f32 %43 = OpConstant 3.67402E-40
					                               f32_3 %44 = OpConstantComposite %43 %43 %43
					                        Private f32* %49 = OpVariable Private
					                                 f32 %56 = OpConstant 3.67402E-40
					                                 f32 %59 = OpConstant 3.67402E-40
					                                     %65 = OpTypePointer Output %7
					                       Output f32_4* %66 = OpVariable Output
					                                 f32 %71 = OpConstant 3.67402E-40
					                               f32_3 %72 = OpConstantComposite %71 %71 %71
					                                     %77 = OpTypePointer Output %6
					                                 void %4 = OpFunction None %3
					                                      %5 = OpLabel
					                 read_only Texture2D %13 = OpLoad %12
					                             sampler %17 = OpLoad %16
					          read_only Texture2DSampled %19 = OpSampledImage %13 %17
					                               f32_2 %23 = OpLoad vs_TEXCOORD0
					                               f32_4 %24 = OpImageSampleImplicitLod %19 %23
					                                             OpStore %9 %24
					                        Private f32* %29 = OpAccessChain %9 %28
					                                 f32 %30 = OpLoad %29
					                          Input f32* %35 = OpAccessChain %32 %33
					                                 f32 %36 = OpLoad %35
					                                 f32 %37 = OpFAdd %30 %36
					                                             OpStore %26 %37
					                               f32_4 %41 = OpLoad %9
					                               f32_3 %42 = OpVectorShuffle %41 %41 0 1 2
					                               f32_3 %45 = OpFAdd %42 %44
					                                             OpStore %40 %45
					                                 f32 %46 = OpLoad %26
					                                 f32 %47 = OpLoad %26
					                                 f32 %48 = OpFMul %46 %47
					                                             OpStore %26 %48
					                                 f32 %50 = OpLoad %26
					                                 f32 %51 = OpLoad %26
					                                 f32 %52 = OpFMul %50 %51
					                                             OpStore %49 %52
					                                 f32 %53 = OpLoad %26
					                                 f32 %54 = OpLoad %49
					                                 f32 %55 = OpFMul %53 %54
					                                 f32 %57 = OpFAdd %55 %56
					                                             OpStore %26 %57
					                                 f32 %58 = OpLoad %26
					                                 f32 %60 = OpExtInst %1 40 %58 %59
					                                             OpStore %26 %60
					                                 f32 %61 = OpLoad %26
					                          Input f32* %62 = OpAccessChain %32 %28
					                                 f32 %63 = OpLoad %62
					                                 f32 %64 = OpExtInst %1 37 %61 %63
					                                             OpStore %26 %64
					                               f32_3 %67 = OpLoad %40
					                                 f32 %68 = OpLoad %26
					                               f32_3 %69 = OpCompositeConstruct %68 %68 %68
					                               f32_3 %70 = OpFMul %67 %69
					                               f32_3 %73 = OpFAdd %70 %72
					                               f32_4 %74 = OpLoad %66
					                               f32_4 %75 = OpVectorShuffle %74 %73 4 5 6 3
					                                             OpStore %66 %75
					                                 f32 %76 = OpLoad %26
					                         Output f32* %78 = OpAccessChain %66 %28
					                                             OpStore %78 %76
					                                             OpReturn
					                                             OpFunctionEnd
"
				}
				SubProgram "vulkan hw_tier01 " {
					"spirv

					//ShaderVulkanExporter
					; SPIR-V
					; Version: 1.0
					; Generator: Khronos Glslang Reference Front End; 1
					; Bound: 105
					; Schema: 0
					                                                     OpCapability Shader
					                                              %1 = OpExtInstImport "GLSL.std.450"
					                                                     OpMemoryModel Logical GLSL450
					                                                     OpEntryPoint Vertex %4 "main" %11 %72 %84 %86 %96 %97
					                                                     OpName vs_TEXCOORD0 "vs_TEXCOORD0"
					                                                     OpDecorate %11 Location 11
					                                                     OpDecorate %16 ArrayStride 16
					                                                     OpDecorate %17 ArrayStride 17
					                                                     OpMemberDecorate %18 0 Offset 18
					                                                     OpMemberDecorate %18 1 Offset 18
					                                                     OpMemberDecorate %18 2 Offset 18
					                                                     OpDecorate %18 Block
					                                                     OpDecorate %20 DescriptorSet 20
					                                                     OpDecorate %20 Binding 20
					                                                     OpMemberDecorate %70 0 BuiltIn 70
					                                                     OpMemberDecorate %70 1 BuiltIn 70
					                                                     OpMemberDecorate %70 2 BuiltIn 70
					                                                     OpDecorate %70 Block
					                                                     OpDecorate vs_TEXCOORD0 Location 84
					                                                     OpDecorate %86 Location 86
					                                                     OpDecorate %96 RelaxedPrecision
					                                                     OpDecorate %96 Location 96
					                                                     OpDecorate %97 RelaxedPrecision
					                                                     OpDecorate %97 Location 97
					                                                     OpDecorate %98 RelaxedPrecision
					                                              %2 = OpTypeVoid
					                                              %3 = OpTypeFunction %2
					                                              %6 = OpTypeFloat 32
					                                              %7 = OpTypeVector %6 4
					                                              %8 = OpTypePointer Private %7
					                               Private f32_4* %9 = OpVariable Private
					                                             %10 = OpTypePointer Input %7
					                                Input f32_4* %11 = OpVariable Input
					                                             %14 = OpTypeInt 32 0
					                                         u32 %15 = OpConstant 4
					                                             %16 = OpTypeArray %7 %15
					                                             %17 = OpTypeArray %7 %15
					                                             %18 = OpTypeStruct %16 %17 %7
					                                             %19 = OpTypePointer Uniform %18
					Uniform struct {f32_4[4]; f32_4[4]; f32_4;}* %20 = OpVariable Uniform
					                                             %21 = OpTypeInt 32 1
					                                         i32 %22 = OpConstant 0
					                                         i32 %23 = OpConstant 1
					                                             %24 = OpTypePointer Uniform %7
					                                         i32 %35 = OpConstant 2
					                                         i32 %44 = OpConstant 3
					                              Private f32_4* %48 = OpVariable Private
					                                         u32 %68 = OpConstant 1
					                                             %69 = OpTypeArray %6 %68
					                                             %70 = OpTypeStruct %7 %6 %69
					                                             %71 = OpTypePointer Output %70
					        Output struct {f32_4; f32; f32[1];}* %72 = OpVariable Output
					                                             %80 = OpTypePointer Output %7
					                                             %82 = OpTypeVector %6 2
					                                             %83 = OpTypePointer Output %82
					                      Output f32_2* vs_TEXCOORD0 = OpVariable Output
					                                             %85 = OpTypePointer Input %82
					                                Input f32_2* %86 = OpVariable Input
					                               Output f32_4* %96 = OpVariable Output
					                                Input f32_4* %97 = OpVariable Input
					                                             %99 = OpTypePointer Output %6
					                                         void %4 = OpFunction None %3
					                                              %5 = OpLabel
					                                       f32_4 %12 = OpLoad %11
					                                       f32_4 %13 = OpVectorShuffle %12 %12 1 1 1 1
					                              Uniform f32_4* %25 = OpAccessChain %20 %22 %23
					                                       f32_4 %26 = OpLoad %25
					                                       f32_4 %27 = OpFMul %13 %26
					                                                     OpStore %9 %27
					                              Uniform f32_4* %28 = OpAccessChain %20 %22 %22
					                                       f32_4 %29 = OpLoad %28
					                                       f32_4 %30 = OpLoad %11
					                                       f32_4 %31 = OpVectorShuffle %30 %30 0 0 0 0
					                                       f32_4 %32 = OpFMul %29 %31
					                                       f32_4 %33 = OpLoad %9
					                                       f32_4 %34 = OpFAdd %32 %33
					                                                     OpStore %9 %34
					                              Uniform f32_4* %36 = OpAccessChain %20 %22 %35
					                                       f32_4 %37 = OpLoad %36
					                                       f32_4 %38 = OpLoad %11
					                                       f32_4 %39 = OpVectorShuffle %38 %38 2 2 2 2
					                                       f32_4 %40 = OpFMul %37 %39
					                                       f32_4 %41 = OpLoad %9
					                                       f32_4 %42 = OpFAdd %40 %41
					                                                     OpStore %9 %42
					                                       f32_4 %43 = OpLoad %9
					                              Uniform f32_4* %45 = OpAccessChain %20 %22 %44
					                                       f32_4 %46 = OpLoad %45
					                                       f32_4 %47 = OpFAdd %43 %46
					                                                     OpStore %9 %47
					                                       f32_4 %49 = OpLoad %9
					                                       f32_4 %50 = OpVectorShuffle %49 %49 1 1 1 1
					                              Uniform f32_4* %51 = OpAccessChain %20 %23 %23
					                                       f32_4 %52 = OpLoad %51
					                                       f32_4 %53 = OpFMul %50 %52
					                                                     OpStore %48 %53
					                              Uniform f32_4* %54 = OpAccessChain %20 %23 %22
					                                       f32_4 %55 = OpLoad %54
					                                       f32_4 %56 = OpLoad %9
					                                       f32_4 %57 = OpVectorShuffle %56 %56 0 0 0 0
					                                       f32_4 %58 = OpFMul %55 %57
					                                       f32_4 %59 = OpLoad %48
					                                       f32_4 %60 = OpFAdd %58 %59
					                                                     OpStore %48 %60
					                              Uniform f32_4* %61 = OpAccessChain %20 %23 %35
					                                       f32_4 %62 = OpLoad %61
					                                       f32_4 %63 = OpLoad %9
					                                       f32_4 %64 = OpVectorShuffle %63 %63 2 2 2 2
					                                       f32_4 %65 = OpFMul %62 %64
					                                       f32_4 %66 = OpLoad %48
					                                       f32_4 %67 = OpFAdd %65 %66
					                                                     OpStore %48 %67
					                              Uniform f32_4* %73 = OpAccessChain %20 %23 %44
					                                       f32_4 %74 = OpLoad %73
					                                       f32_4 %75 = OpLoad %9
					                                       f32_4 %76 = OpVectorShuffle %75 %75 3 3 3 3
					                                       f32_4 %77 = OpFMul %74 %76
					                                       f32_4 %78 = OpLoad %48
					                                       f32_4 %79 = OpFAdd %77 %78
					                               Output f32_4* %81 = OpAccessChain %72 %22
					                                                     OpStore %81 %79
					                                       f32_2 %87 = OpLoad %86
					                              Uniform f32_4* %88 = OpAccessChain %20 %35
					                                       f32_4 %89 = OpLoad %88
					                                       f32_2 %90 = OpVectorShuffle %89 %89 0 1
					                                       f32_2 %91 = OpFMul %87 %90
					                              Uniform f32_4* %92 = OpAccessChain %20 %35
					                                       f32_4 %93 = OpLoad %92
					                                       f32_2 %94 = OpVectorShuffle %93 %93 2 3
					                                       f32_2 %95 = OpFAdd %91 %94
					                                                     OpStore vs_TEXCOORD0 %95
					                                       f32_4 %98 = OpLoad %97
					                                                     OpStore %96 %98
					                                Output f32* %100 = OpAccessChain %72 %22 %68
					                                        f32 %101 = OpLoad %100
					                                        f32 %102 = OpFNegate %101
					                                Output f32* %103 = OpAccessChain %72 %22 %68
					                                                     OpStore %103 %102
					                                                     OpReturn
					                                                     OpFunctionEnd
					//ShaderVulkanExporter
					; SPIR-V
					; Version: 1.0
					; Generator: Khronos Glslang Reference Front End; 1
					; Bound: 80
					; Schema: 0
					                                             OpCapability Shader
					                                      %1 = OpExtInstImport "GLSL.std.450"
					                                             OpMemoryModel Logical GLSL450
					                                             OpEntryPoint Fragment %4 "main" %22 %32 %66
					                                             OpExecutionMode %4 OriginUpperLeft
					                                             OpName vs_TEXCOORD0 "vs_TEXCOORD0"
					                                             OpDecorate %9 RelaxedPrecision
					                                             OpDecorate %12 RelaxedPrecision
					                                             OpDecorate %12 DescriptorSet 12
					                                             OpDecorate %12 Binding 12
					                                             OpDecorate %13 RelaxedPrecision
					                                             OpDecorate %16 RelaxedPrecision
					                                             OpDecorate %16 DescriptorSet 16
					                                             OpDecorate %16 Binding 16
					                                             OpDecorate %17 RelaxedPrecision
					                                             OpDecorate vs_TEXCOORD0 Location 22
					                                             OpDecorate %26 RelaxedPrecision
					                                             OpDecorate %30 RelaxedPrecision
					                                             OpDecorate %32 RelaxedPrecision
					                                             OpDecorate %32 Location 32
					                                             OpDecorate %36 RelaxedPrecision
					                                             OpDecorate %37 RelaxedPrecision
					                                             OpDecorate %40 RelaxedPrecision
					                                             OpDecorate %41 RelaxedPrecision
					                                             OpDecorate %42 RelaxedPrecision
					                                             OpDecorate %45 RelaxedPrecision
					                                             OpDecorate %46 RelaxedPrecision
					                                             OpDecorate %47 RelaxedPrecision
					                                             OpDecorate %48 RelaxedPrecision
					                                             OpDecorate %49 RelaxedPrecision
					                                             OpDecorate %50 RelaxedPrecision
					                                             OpDecorate %51 RelaxedPrecision
					                                             OpDecorate %52 RelaxedPrecision
					                                             OpDecorate %53 RelaxedPrecision
					                                             OpDecorate %54 RelaxedPrecision
					                                             OpDecorate %55 RelaxedPrecision
					                                             OpDecorate %57 RelaxedPrecision
					                                             OpDecorate %58 RelaxedPrecision
					                                             OpDecorate %60 RelaxedPrecision
					                                             OpDecorate %61 RelaxedPrecision
					                                             OpDecorate %63 RelaxedPrecision
					                                             OpDecorate %64 RelaxedPrecision
					                                             OpDecorate %66 Location 66
					                                             OpDecorate %67 RelaxedPrecision
					                                             OpDecorate %68 RelaxedPrecision
					                                             OpDecorate %69 RelaxedPrecision
					                                             OpDecorate %70 RelaxedPrecision
					                                             OpDecorate %73 RelaxedPrecision
					                                             OpDecorate %76 RelaxedPrecision
					                                      %2 = OpTypeVoid
					                                      %3 = OpTypeFunction %2
					                                      %6 = OpTypeFloat 32
					                                      %7 = OpTypeVector %6 4
					                                      %8 = OpTypePointer Private %7
					                       Private f32_4* %9 = OpVariable Private
					                                     %10 = OpTypeImage %6 Dim2D 0 0 0 1 Unknown
					                                     %11 = OpTypePointer UniformConstant %10
					UniformConstant read_only Texture2D* %12 = OpVariable UniformConstant
					                                     %14 = OpTypeSampler
					                                     %15 = OpTypePointer UniformConstant %14
					            UniformConstant sampler* %16 = OpVariable UniformConstant
					                                     %18 = OpTypeSampledImage %10
					                                     %20 = OpTypeVector %6 2
					                                     %21 = OpTypePointer Input %20
					               Input f32_2* vs_TEXCOORD0 = OpVariable Input
					                                     %25 = OpTypePointer Private %6
					                        Private f32* %26 = OpVariable Private
					                                     %27 = OpTypeInt 32 0
					                                 u32 %28 = OpConstant 3
					                                     %31 = OpTypePointer Input %7
					                        Input f32_4* %32 = OpVariable Input
					                                 u32 %33 = OpConstant 0
					                                     %34 = OpTypePointer Input %6
					                                     %38 = OpTypeVector %6 3
					                                     %39 = OpTypePointer Private %38
					                      Private f32_3* %40 = OpVariable Private
					                                 f32 %43 = OpConstant 3.67402E-40
					                               f32_3 %44 = OpConstantComposite %43 %43 %43
					                        Private f32* %49 = OpVariable Private
					                                 f32 %56 = OpConstant 3.67402E-40
					                                 f32 %59 = OpConstant 3.67402E-40
					                                     %65 = OpTypePointer Output %7
					                       Output f32_4* %66 = OpVariable Output
					                                 f32 %71 = OpConstant 3.67402E-40
					                               f32_3 %72 = OpConstantComposite %71 %71 %71
					                                     %77 = OpTypePointer Output %6
					                                 void %4 = OpFunction None %3
					                                      %5 = OpLabel
					                 read_only Texture2D %13 = OpLoad %12
					                             sampler %17 = OpLoad %16
					          read_only Texture2DSampled %19 = OpSampledImage %13 %17
					                               f32_2 %23 = OpLoad vs_TEXCOORD0
					                               f32_4 %24 = OpImageSampleImplicitLod %19 %23
					                                             OpStore %9 %24
					                        Private f32* %29 = OpAccessChain %9 %28
					                                 f32 %30 = OpLoad %29
					                          Input f32* %35 = OpAccessChain %32 %33
					                                 f32 %36 = OpLoad %35
					                                 f32 %37 = OpFAdd %30 %36
					                                             OpStore %26 %37
					                               f32_4 %41 = OpLoad %9
					                               f32_3 %42 = OpVectorShuffle %41 %41 0 1 2
					                               f32_3 %45 = OpFAdd %42 %44
					                                             OpStore %40 %45
					                                 f32 %46 = OpLoad %26
					                                 f32 %47 = OpLoad %26
					                                 f32 %48 = OpFMul %46 %47
					                                             OpStore %26 %48
					                                 f32 %50 = OpLoad %26
					                                 f32 %51 = OpLoad %26
					                                 f32 %52 = OpFMul %50 %51
					                                             OpStore %49 %52
					                                 f32 %53 = OpLoad %26
					                                 f32 %54 = OpLoad %49
					                                 f32 %55 = OpFMul %53 %54
					                                 f32 %57 = OpFAdd %55 %56
					                                             OpStore %26 %57
					                                 f32 %58 = OpLoad %26
					                                 f32 %60 = OpExtInst %1 40 %58 %59
					                                             OpStore %26 %60
					                                 f32 %61 = OpLoad %26
					                          Input f32* %62 = OpAccessChain %32 %28
					                                 f32 %63 = OpLoad %62
					                                 f32 %64 = OpExtInst %1 37 %61 %63
					                                             OpStore %26 %64
					                               f32_3 %67 = OpLoad %40
					                                 f32 %68 = OpLoad %26
					                               f32_3 %69 = OpCompositeConstruct %68 %68 %68
					                               f32_3 %70 = OpFMul %67 %69
					                               f32_3 %73 = OpFAdd %70 %72
					                               f32_4 %74 = OpLoad %66
					                               f32_4 %75 = OpVectorShuffle %74 %73 4 5 6 3
					                                             OpStore %66 %75
					                                 f32 %76 = OpLoad %26
					                         Output f32* %78 = OpAccessChain %66 %28
					                                             OpStore %78 %76
					                                             OpReturn
					                                             OpFunctionEnd
"
				}
				SubProgram "vulkan hw_tier02 " {
					"spirv

					//ShaderVulkanExporter
					; SPIR-V
					; Version: 1.0
					; Generator: Khronos Glslang Reference Front End; 1
					; Bound: 105
					; Schema: 0
					                                                     OpCapability Shader
					                                              %1 = OpExtInstImport "GLSL.std.450"
					                                                     OpMemoryModel Logical GLSL450
					                                                     OpEntryPoint Vertex %4 "main" %11 %72 %84 %86 %96 %97
					                                                     OpName vs_TEXCOORD0 "vs_TEXCOORD0"
					                                                     OpDecorate %11 Location 11
					                                                     OpDecorate %16 ArrayStride 16
					                                                     OpDecorate %17 ArrayStride 17
					                                                     OpMemberDecorate %18 0 Offset 18
					                                                     OpMemberDecorate %18 1 Offset 18
					                                                     OpMemberDecorate %18 2 Offset 18
					                                                     OpDecorate %18 Block
					                                                     OpDecorate %20 DescriptorSet 20
					                                                     OpDecorate %20 Binding 20
					                                                     OpMemberDecorate %70 0 BuiltIn 70
					                                                     OpMemberDecorate %70 1 BuiltIn 70
					                                                     OpMemberDecorate %70 2 BuiltIn 70
					                                                     OpDecorate %70 Block
					                                                     OpDecorate vs_TEXCOORD0 Location 84
					                                                     OpDecorate %86 Location 86
					                                                     OpDecorate %96 RelaxedPrecision
					                                                     OpDecorate %96 Location 96
					                                                     OpDecorate %97 RelaxedPrecision
					                                                     OpDecorate %97 Location 97
					                                                     OpDecorate %98 RelaxedPrecision
					                                              %2 = OpTypeVoid
					                                              %3 = OpTypeFunction %2
					                                              %6 = OpTypeFloat 32
					                                              %7 = OpTypeVector %6 4
					                                              %8 = OpTypePointer Private %7
					                               Private f32_4* %9 = OpVariable Private
					                                             %10 = OpTypePointer Input %7
					                                Input f32_4* %11 = OpVariable Input
					                                             %14 = OpTypeInt 32 0
					                                         u32 %15 = OpConstant 4
					                                             %16 = OpTypeArray %7 %15
					                                             %17 = OpTypeArray %7 %15
					                                             %18 = OpTypeStruct %16 %17 %7
					                                             %19 = OpTypePointer Uniform %18
					Uniform struct {f32_4[4]; f32_4[4]; f32_4;}* %20 = OpVariable Uniform
					                                             %21 = OpTypeInt 32 1
					                                         i32 %22 = OpConstant 0
					                                         i32 %23 = OpConstant 1
					                                             %24 = OpTypePointer Uniform %7
					                                         i32 %35 = OpConstant 2
					                                         i32 %44 = OpConstant 3
					                              Private f32_4* %48 = OpVariable Private
					                                         u32 %68 = OpConstant 1
					                                             %69 = OpTypeArray %6 %68
					                                             %70 = OpTypeStruct %7 %6 %69
					                                             %71 = OpTypePointer Output %70
					        Output struct {f32_4; f32; f32[1];}* %72 = OpVariable Output
					                                             %80 = OpTypePointer Output %7
					                                             %82 = OpTypeVector %6 2
					                                             %83 = OpTypePointer Output %82
					                      Output f32_2* vs_TEXCOORD0 = OpVariable Output
					                                             %85 = OpTypePointer Input %82
					                                Input f32_2* %86 = OpVariable Input
					                               Output f32_4* %96 = OpVariable Output
					                                Input f32_4* %97 = OpVariable Input
					                                             %99 = OpTypePointer Output %6
					                                         void %4 = OpFunction None %3
					                                              %5 = OpLabel
					                                       f32_4 %12 = OpLoad %11
					                                       f32_4 %13 = OpVectorShuffle %12 %12 1 1 1 1
					                              Uniform f32_4* %25 = OpAccessChain %20 %22 %23
					                                       f32_4 %26 = OpLoad %25
					                                       f32_4 %27 = OpFMul %13 %26
					                                                     OpStore %9 %27
					                              Uniform f32_4* %28 = OpAccessChain %20 %22 %22
					                                       f32_4 %29 = OpLoad %28
					                                       f32_4 %30 = OpLoad %11
					                                       f32_4 %31 = OpVectorShuffle %30 %30 0 0 0 0
					                                       f32_4 %32 = OpFMul %29 %31
					                                       f32_4 %33 = OpLoad %9
					                                       f32_4 %34 = OpFAdd %32 %33
					                                                     OpStore %9 %34
					                              Uniform f32_4* %36 = OpAccessChain %20 %22 %35
					                                       f32_4 %37 = OpLoad %36
					                                       f32_4 %38 = OpLoad %11
					                                       f32_4 %39 = OpVectorShuffle %38 %38 2 2 2 2
					                                       f32_4 %40 = OpFMul %37 %39
					                                       f32_4 %41 = OpLoad %9
					                                       f32_4 %42 = OpFAdd %40 %41
					                                                     OpStore %9 %42
					                                       f32_4 %43 = OpLoad %9
					                              Uniform f32_4* %45 = OpAccessChain %20 %22 %44
					                                       f32_4 %46 = OpLoad %45
					                                       f32_4 %47 = OpFAdd %43 %46
					                                                     OpStore %9 %47
					                                       f32_4 %49 = OpLoad %9
					                                       f32_4 %50 = OpVectorShuffle %49 %49 1 1 1 1
					                              Uniform f32_4* %51 = OpAccessChain %20 %23 %23
					                                       f32_4 %52 = OpLoad %51
					                                       f32_4 %53 = OpFMul %50 %52
					                                                     OpStore %48 %53
					                              Uniform f32_4* %54 = OpAccessChain %20 %23 %22
					                                       f32_4 %55 = OpLoad %54
					                                       f32_4 %56 = OpLoad %9
					                                       f32_4 %57 = OpVectorShuffle %56 %56 0 0 0 0
					                                       f32_4 %58 = OpFMul %55 %57
					                                       f32_4 %59 = OpLoad %48
					                                       f32_4 %60 = OpFAdd %58 %59
					                                                     OpStore %48 %60
					                              Uniform f32_4* %61 = OpAccessChain %20 %23 %35
					                                       f32_4 %62 = OpLoad %61
					                                       f32_4 %63 = OpLoad %9
					                                       f32_4 %64 = OpVectorShuffle %63 %63 2 2 2 2
					                                       f32_4 %65 = OpFMul %62 %64
					                                       f32_4 %66 = OpLoad %48
					                                       f32_4 %67 = OpFAdd %65 %66
					                                                     OpStore %48 %67
					                              Uniform f32_4* %73 = OpAccessChain %20 %23 %44
					                                       f32_4 %74 = OpLoad %73
					                                       f32_4 %75 = OpLoad %9
					                                       f32_4 %76 = OpVectorShuffle %75 %75 3 3 3 3
					                                       f32_4 %77 = OpFMul %74 %76
					                                       f32_4 %78 = OpLoad %48
					                                       f32_4 %79 = OpFAdd %77 %78
					                               Output f32_4* %81 = OpAccessChain %72 %22
					                                                     OpStore %81 %79
					                                       f32_2 %87 = OpLoad %86
					                              Uniform f32_4* %88 = OpAccessChain %20 %35
					                                       f32_4 %89 = OpLoad %88
					                                       f32_2 %90 = OpVectorShuffle %89 %89 0 1
					                                       f32_2 %91 = OpFMul %87 %90
					                              Uniform f32_4* %92 = OpAccessChain %20 %35
					                                       f32_4 %93 = OpLoad %92
					                                       f32_2 %94 = OpVectorShuffle %93 %93 2 3
					                                       f32_2 %95 = OpFAdd %91 %94
					                                                     OpStore vs_TEXCOORD0 %95
					                                       f32_4 %98 = OpLoad %97
					                                                     OpStore %96 %98
					                                Output f32* %100 = OpAccessChain %72 %22 %68
					                                        f32 %101 = OpLoad %100
					                                        f32 %102 = OpFNegate %101
					                                Output f32* %103 = OpAccessChain %72 %22 %68
					                                                     OpStore %103 %102
					                                                     OpReturn
					                                                     OpFunctionEnd
					//ShaderVulkanExporter
					; SPIR-V
					; Version: 1.0
					; Generator: Khronos Glslang Reference Front End; 1
					; Bound: 80
					; Schema: 0
					                                             OpCapability Shader
					                                      %1 = OpExtInstImport "GLSL.std.450"
					                                             OpMemoryModel Logical GLSL450
					                                             OpEntryPoint Fragment %4 "main" %22 %32 %66
					                                             OpExecutionMode %4 OriginUpperLeft
					                                             OpName vs_TEXCOORD0 "vs_TEXCOORD0"
					                                             OpDecorate %9 RelaxedPrecision
					                                             OpDecorate %12 RelaxedPrecision
					                                             OpDecorate %12 DescriptorSet 12
					                                             OpDecorate %12 Binding 12
					                                             OpDecorate %13 RelaxedPrecision
					                                             OpDecorate %16 RelaxedPrecision
					                                             OpDecorate %16 DescriptorSet 16
					                                             OpDecorate %16 Binding 16
					                                             OpDecorate %17 RelaxedPrecision
					                                             OpDecorate vs_TEXCOORD0 Location 22
					                                             OpDecorate %26 RelaxedPrecision
					                                             OpDecorate %30 RelaxedPrecision
					                                             OpDecorate %32 RelaxedPrecision
					                                             OpDecorate %32 Location 32
					                                             OpDecorate %36 RelaxedPrecision
					                                             OpDecorate %37 RelaxedPrecision
					                                             OpDecorate %40 RelaxedPrecision
					                                             OpDecorate %41 RelaxedPrecision
					                                             OpDecorate %42 RelaxedPrecision
					                                             OpDecorate %45 RelaxedPrecision
					                                             OpDecorate %46 RelaxedPrecision
					                                             OpDecorate %47 RelaxedPrecision
					                                             OpDecorate %48 RelaxedPrecision
					                                             OpDecorate %49 RelaxedPrecision
					                                             OpDecorate %50 RelaxedPrecision
					                                             OpDecorate %51 RelaxedPrecision
					                                             OpDecorate %52 RelaxedPrecision
					                                             OpDecorate %53 RelaxedPrecision
					                                             OpDecorate %54 RelaxedPrecision
					                                             OpDecorate %55 RelaxedPrecision
					                                             OpDecorate %57 RelaxedPrecision
					                                             OpDecorate %58 RelaxedPrecision
					                                             OpDecorate %60 RelaxedPrecision
					                                             OpDecorate %61 RelaxedPrecision
					                                             OpDecorate %63 RelaxedPrecision
					                                             OpDecorate %64 RelaxedPrecision
					                                             OpDecorate %66 Location 66
					                                             OpDecorate %67 RelaxedPrecision
					                                             OpDecorate %68 RelaxedPrecision
					                                             OpDecorate %69 RelaxedPrecision
					                                             OpDecorate %70 RelaxedPrecision
					                                             OpDecorate %73 RelaxedPrecision
					                                             OpDecorate %76 RelaxedPrecision
					                                      %2 = OpTypeVoid
					                                      %3 = OpTypeFunction %2
					                                      %6 = OpTypeFloat 32
					                                      %7 = OpTypeVector %6 4
					                                      %8 = OpTypePointer Private %7
					                       Private f32_4* %9 = OpVariable Private
					                                     %10 = OpTypeImage %6 Dim2D 0 0 0 1 Unknown
					                                     %11 = OpTypePointer UniformConstant %10
					UniformConstant read_only Texture2D* %12 = OpVariable UniformConstant
					                                     %14 = OpTypeSampler
					                                     %15 = OpTypePointer UniformConstant %14
					            UniformConstant sampler* %16 = OpVariable UniformConstant
					                                     %18 = OpTypeSampledImage %10
					                                     %20 = OpTypeVector %6 2
					                                     %21 = OpTypePointer Input %20
					               Input f32_2* vs_TEXCOORD0 = OpVariable Input
					                                     %25 = OpTypePointer Private %6
					                        Private f32* %26 = OpVariable Private
					                                     %27 = OpTypeInt 32 0
					                                 u32 %28 = OpConstant 3
					                                     %31 = OpTypePointer Input %7
					                        Input f32_4* %32 = OpVariable Input
					                                 u32 %33 = OpConstant 0
					                                     %34 = OpTypePointer Input %6
					                                     %38 = OpTypeVector %6 3
					                                     %39 = OpTypePointer Private %38
					                      Private f32_3* %40 = OpVariable Private
					                                 f32 %43 = OpConstant 3.67402E-40
					                               f32_3 %44 = OpConstantComposite %43 %43 %43
					                        Private f32* %49 = OpVariable Private
					                                 f32 %56 = OpConstant 3.67402E-40
					                                 f32 %59 = OpConstant 3.67402E-40
					                                     %65 = OpTypePointer Output %7
					                       Output f32_4* %66 = OpVariable Output
					                                 f32 %71 = OpConstant 3.67402E-40
					                               f32_3 %72 = OpConstantComposite %71 %71 %71
					                                     %77 = OpTypePointer Output %6
					                                 void %4 = OpFunction None %3
					                                      %5 = OpLabel
					                 read_only Texture2D %13 = OpLoad %12
					                             sampler %17 = OpLoad %16
					          read_only Texture2DSampled %19 = OpSampledImage %13 %17
					                               f32_2 %23 = OpLoad vs_TEXCOORD0
					                               f32_4 %24 = OpImageSampleImplicitLod %19 %23
					                                             OpStore %9 %24
					                        Private f32* %29 = OpAccessChain %9 %28
					                                 f32 %30 = OpLoad %29
					                          Input f32* %35 = OpAccessChain %32 %33
					                                 f32 %36 = OpLoad %35
					                                 f32 %37 = OpFAdd %30 %36
					                                             OpStore %26 %37
					                               f32_4 %41 = OpLoad %9
					                               f32_3 %42 = OpVectorShuffle %41 %41 0 1 2
					                               f32_3 %45 = OpFAdd %42 %44
					                                             OpStore %40 %45
					                                 f32 %46 = OpLoad %26
					                                 f32 %47 = OpLoad %26
					                                 f32 %48 = OpFMul %46 %47
					                                             OpStore %26 %48
					                                 f32 %50 = OpLoad %26
					                                 f32 %51 = OpLoad %26
					                                 f32 %52 = OpFMul %50 %51
					                                             OpStore %49 %52
					                                 f32 %53 = OpLoad %26
					                                 f32 %54 = OpLoad %49
					                                 f32 %55 = OpFMul %53 %54
					                                 f32 %57 = OpFAdd %55 %56
					                                             OpStore %26 %57
					                                 f32 %58 = OpLoad %26
					                                 f32 %60 = OpExtInst %1 40 %58 %59
					                                             OpStore %26 %60
					                                 f32 %61 = OpLoad %26
					                          Input f32* %62 = OpAccessChain %32 %28
					                                 f32 %63 = OpLoad %62
					                                 f32 %64 = OpExtInst %1 37 %61 %63
					                                             OpStore %26 %64
					                               f32_3 %67 = OpLoad %40
					                                 f32 %68 = OpLoad %26
					                               f32_3 %69 = OpCompositeConstruct %68 %68 %68
					                               f32_3 %70 = OpFMul %67 %69
					                               f32_3 %73 = OpFAdd %70 %72
					                               f32_4 %74 = OpLoad %66
					                               f32_4 %75 = OpVectorShuffle %74 %73 4 5 6 3
					                                             OpStore %66 %75
					                                 f32 %76 = OpLoad %26
					                         Output f32* %78 = OpAccessChain %66 %28
					                                             OpStore %78 %76
					                                             OpReturn
					                                             OpFunctionEnd
"
				}
			}
			Program "fp" {
				SubProgram "d3d11 hw_tier00 " {
					"ps_4_0

					//ShaderDXExporter_Disassembler
					//
					// Generated by
					//
					//
					//
					// Input signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_POSITION              0   xyzw        0      POS   float
					// TEXCOORD                 0   xy          1     NONE   float   xy
					// COLOR                    0   xyzw        2     NONE   float   x  w
					//
					//
					// Output signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_Target                0   xyzw        0   TARGET   float   xyzw
					//
					ps_4_0
					dcl_sampler s0, mode_default
					dcl_resource_texture2d (float,float,float,float) t0
					dcl_input_ps linear v1.xy
					dcl_input_ps linear v2.xw
					dcl_output o0.xyzw
					dcl_temps 2
					sample r0.xyzw, v1.xyxx, t0.xyzw, s0
					add r0.w, r0.w, v2.x
					add r0.xyz, r0.xyzx, l(-0.5, -0.5, -0.5, 0)
					mul r0.w, r0.w, r0.w
					mul r1.x, r0.w, r0.w
					mad r0.w, r0.w, r1.x, l(-1)
					max r0.w, r0.w, l(0)
					min r0.w, r0.w, v2.w
					mad o0.xyz, r0.xyzx, r0.wwww, l(0.5, 0.5, 0.5, 0)
					mov o0.w, r0.w
					ret
"
				}
				SubProgram "d3d11 hw_tier01 " {
					"ps_4_0

					//ShaderDXExporter_Disassembler
					//
					// Generated by
					//
					//
					//
					// Input signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_POSITION              0   xyzw        0      POS   float
					// TEXCOORD                 0   xy          1     NONE   float   xy
					// COLOR                    0   xyzw        2     NONE   float   x  w
					//
					//
					// Output signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_Target                0   xyzw        0   TARGET   float   xyzw
					//
					ps_4_0
					dcl_sampler s0, mode_default
					dcl_resource_texture2d (float,float,float,float) t0
					dcl_input_ps linear v1.xy
					dcl_input_ps linear v2.xw
					dcl_output o0.xyzw
					dcl_temps 2
					sample r0.xyzw, v1.xyxx, t0.xyzw, s0
					add r0.w, r0.w, v2.x
					add r0.xyz, r0.xyzx, l(-0.5, -0.5, -0.5, 0)
					mul r0.w, r0.w, r0.w
					mul r1.x, r0.w, r0.w
					mad r0.w, r0.w, r1.x, l(-1)
					max r0.w, r0.w, l(0)
					min r0.w, r0.w, v2.w
					mad o0.xyz, r0.xyzx, r0.wwww, l(0.5, 0.5, 0.5, 0)
					mov o0.w, r0.w
					ret
"
				}
				SubProgram "d3d11 hw_tier02 " {
					"ps_4_0

					//ShaderDXExporter_Disassembler
					//
					// Generated by
					//
					//
					//
					// Input signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_POSITION              0   xyzw        0      POS   float
					// TEXCOORD                 0   xy          1     NONE   float   xy
					// COLOR                    0   xyzw        2     NONE   float   x  w
					//
					//
					// Output signature:
					//
					// Name                 Index   Mask Register SysValue  Format   Used
					// -------------------- ----- ------ -------- -------- ------- ------
					// SV_Target                0   xyzw        0   TARGET   float   xyzw
					//
					ps_4_0
					dcl_sampler s0, mode_default
					dcl_resource_texture2d (float,float,float,float) t0
					dcl_input_ps linear v1.xy
					dcl_input_ps linear v2.xw
					dcl_output o0.xyzw
					dcl_temps 2
					sample r0.xyzw, v1.xyxx, t0.xyzw, s0
					add r0.w, r0.w, v2.x
					add r0.xyz, r0.xyzx, l(-0.5, -0.5, -0.5, 0)
					mul r0.w, r0.w, r0.w
					mul r1.x, r0.w, r0.w
					mad r0.w, r0.w, r1.x, l(-1)
					max r0.w, r0.w, l(0)
					min r0.w, r0.w, v2.w
					mad o0.xyz, r0.xyzx, r0.wwww, l(0.5, 0.5, 0.5, 0)
					mov o0.w, r0.w
					ret
"
				}
				SubProgram "glcore hw_tier00 " {
					"!!GL3x"
				}
				SubProgram "glcore hw_tier01 " {
					"!!GL3x"
				}
				SubProgram "glcore hw_tier02 " {
					"!!GL3x"
				}
				SubProgram "vulkan hw_tier00 " {
					"spirv"
				}
				SubProgram "vulkan hw_tier01 " {
					"spirv"
				}
				SubProgram "vulkan hw_tier02 " {
					"spirv"
				}
			}
		}
	}
}