243 lines
12 KiB
GLSL
243 lines
12 KiB
GLSL
|
; SPIR-V
|
||
|
; Version: 1.0
|
||
|
; Generator: Google spiregg; 0
|
||
|
; Bound: 180
|
||
|
; Schema: 0
|
||
|
OpCapability Shader
|
||
|
OpCapability SampledBuffer
|
||
|
OpCapability ImageBuffer
|
||
|
OpExtension "SPV_GOOGLE_hlsl_functionality1"
|
||
|
%1 = OpExtInstImport "GLSL.std.450"
|
||
|
OpMemoryModel Logical GLSL450
|
||
|
OpEntryPoint Fragment %ShadowObjectCullPS "main" %in_var_TEXCOORD0 %gl_FragCoord %out_var_SV_Target0
|
||
|
OpExecutionMode %ShadowObjectCullPS OriginUpperLeft
|
||
|
OpSource HLSL 600
|
||
|
OpName %type_StructuredBuffer_v4float "type.StructuredBuffer.v4float"
|
||
|
OpName %CulledObjectBoxBounds "CulledObjectBoxBounds"
|
||
|
OpName %type__Globals "type.$Globals"
|
||
|
OpMemberName %type__Globals 0 "ShadowTileListGroupSize"
|
||
|
OpName %_Globals "$Globals"
|
||
|
OpName %type_buffer_image "type.buffer.image"
|
||
|
OpName %RWShadowTileNumCulledObjects "RWShadowTileNumCulledObjects"
|
||
|
OpName %in_var_TEXCOORD0 "in.var.TEXCOORD0"
|
||
|
OpName %out_var_SV_Target0 "out.var.SV_Target0"
|
||
|
OpName %ShadowObjectCullPS "ShadowObjectCullPS"
|
||
|
OpDecorateString %in_var_TEXCOORD0 UserSemantic "TEXCOORD0"
|
||
|
OpDecorate %in_var_TEXCOORD0 Flat
|
||
|
OpDecorate %gl_FragCoord BuiltIn FragCoord
|
||
|
OpDecorateString %gl_FragCoord UserSemantic "SV_POSITION"
|
||
|
OpDecorateString %out_var_SV_Target0 UserSemantic "SV_Target0"
|
||
|
OpDecorate %in_var_TEXCOORD0 Location 0
|
||
|
OpDecorate %out_var_SV_Target0 Location 0
|
||
|
OpDecorate %CulledObjectBoxBounds DescriptorSet 0
|
||
|
OpDecorate %CulledObjectBoxBounds Binding 1
|
||
|
OpDecorate %_Globals DescriptorSet 0
|
||
|
OpDecorate %_Globals Binding 2
|
||
|
OpDecorate %RWShadowTileNumCulledObjects DescriptorSet 0
|
||
|
OpDecorate %RWShadowTileNumCulledObjects Binding 0
|
||
|
OpDecorate %_runtimearr_v4float ArrayStride 16
|
||
|
OpMemberDecorate %type_StructuredBuffer_v4float 0 Offset 0
|
||
|
OpMemberDecorate %type_StructuredBuffer_v4float 0 NonWritable
|
||
|
OpDecorate %type_StructuredBuffer_v4float BufferBlock
|
||
|
OpMemberDecorate %type__Globals 0 Offset 0
|
||
|
OpDecorate %type__Globals Block
|
||
|
%float = OpTypeFloat 32
|
||
|
%v4float = OpTypeVector %float 4
|
||
|
%v3float = OpTypeVector %float 3
|
||
|
%v2float = OpTypeVector %float 2
|
||
|
%int = OpTypeInt 32 1
|
||
|
%uint = OpTypeInt 32 0
|
||
|
%uint_2 = OpConstant %uint 2
|
||
|
%uint_4 = OpConstant %uint 4
|
||
|
%float_0 = OpConstant %float 0
|
||
|
%22 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
||
|
%int_1 = OpConstant %int 1
|
||
|
%int_0 = OpConstant %int 0
|
||
|
%uint_1 = OpConstant %uint 1
|
||
|
%float_2 = OpConstant %float 2
|
||
|
%27 = OpConstantComposite %v2float %float_2 %float_2
|
||
|
%float_1 = OpConstant %float 1
|
||
|
%29 = OpConstantComposite %v2float %float_1 %float_1
|
||
|
%float_n1000 = OpConstant %float -1000
|
||
|
%int_2 = OpConstant %int 2
|
||
|
%float_0_5 = OpConstant %float 0.5
|
||
|
%33 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
|
||
|
%float_500000 = OpConstant %float 500000
|
||
|
%35 = OpConstantComposite %v3float %float_500000 %float_500000 %float_500000
|
||
|
%float_n500000 = OpConstant %float -500000
|
||
|
%37 = OpConstantComposite %v3float %float_n500000 %float_n500000 %float_n500000
|
||
|
%int_3 = OpConstant %int 3
|
||
|
%int_4 = OpConstant %int 4
|
||
|
%int_5 = OpConstant %int 5
|
||
|
%int_6 = OpConstant %int 6
|
||
|
%int_7 = OpConstant %int 7
|
||
|
%int_8 = OpConstant %int 8
|
||
|
%44 = OpConstantComposite %v3float %float_1 %float_1 %float_1
|
||
|
%float_n1 = OpConstant %float -1
|
||
|
%46 = OpConstantComposite %v3float %float_n1 %float_n1 %float_n1
|
||
|
%uint_5 = OpConstant %uint 5
|
||
|
%uint_0 = OpConstant %uint 0
|
||
|
%uint_3 = OpConstant %uint 3
|
||
|
%_runtimearr_v4float = OpTypeRuntimeArray %v4float
|
||
|
%type_StructuredBuffer_v4float = OpTypeStruct %_runtimearr_v4float
|
||
|
%_ptr_Uniform_type_StructuredBuffer_v4float = OpTypePointer Uniform %type_StructuredBuffer_v4float
|
||
|
%v2uint = OpTypeVector %uint 2
|
||
|
%type__Globals = OpTypeStruct %v2uint
|
||
|
%_ptr_Uniform_type__Globals = OpTypePointer Uniform %type__Globals
|
||
|
%type_buffer_image = OpTypeImage %uint Buffer 2 0 0 2 R32ui
|
||
|
%_ptr_UniformConstant_type_buffer_image = OpTypePointer UniformConstant %type_buffer_image
|
||
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
||
|
%_ptr_Input_v4float = OpTypePointer Input %v4float
|
||
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||
|
%void = OpTypeVoid
|
||
|
%58 = OpTypeFunction %void
|
||
|
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
||
|
%uint_8 = OpConstant %uint 8
|
||
|
%_arr_v3float_uint_8 = OpTypeArray %v3float %uint_8
|
||
|
%_ptr_Function__arr_v3float_uint_8 = OpTypePointer Function %_arr_v3float_uint_8
|
||
|
%_ptr_Uniform_v2uint = OpTypePointer Uniform %v2uint
|
||
|
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
||
|
%bool = OpTypeBool
|
||
|
%v2bool = OpTypeVector %bool 2
|
||
|
%v3bool = OpTypeVector %bool 3
|
||
|
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||
|
%_ptr_Image_uint = OpTypePointer Image %uint
|
||
|
%CulledObjectBoxBounds = OpVariable %_ptr_Uniform_type_StructuredBuffer_v4float Uniform
|
||
|
%_Globals = OpVariable %_ptr_Uniform_type__Globals Uniform
|
||
|
%RWShadowTileNumCulledObjects = OpVariable %_ptr_UniformConstant_type_buffer_image UniformConstant
|
||
|
%in_var_TEXCOORD0 = OpVariable %_ptr_Input_uint Input
|
||
|
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
|
||
|
%out_var_SV_Target0 = OpVariable %_ptr_Output_v4float Output
|
||
|
%70 = OpUndef %v3float
|
||
|
%71 = OpConstantNull %v3float
|
||
|
%ShadowObjectCullPS = OpFunction %void None %58
|
||
|
%72 = OpLabel
|
||
|
%73 = OpVariable %_ptr_Function__arr_v3float_uint_8 Function
|
||
|
%74 = OpLoad %uint %in_var_TEXCOORD0
|
||
|
%75 = OpLoad %v4float %gl_FragCoord
|
||
|
%76 = OpVectorShuffle %v2float %75 %75 0 1
|
||
|
%77 = OpConvertFToU %v2uint %76
|
||
|
%78 = OpCompositeExtract %uint %77 1
|
||
|
%79 = OpAccessChain %_ptr_Uniform_v2uint %_Globals %int_0
|
||
|
%80 = OpAccessChain %_ptr_Uniform_uint %_Globals %int_0 %int_0
|
||
|
%81 = OpLoad %uint %80
|
||
|
%82 = OpIMul %uint %78 %81
|
||
|
%83 = OpCompositeExtract %uint %77 0
|
||
|
%84 = OpIAdd %uint %82 %83
|
||
|
%85 = OpConvertUToF %float %83
|
||
|
%86 = OpAccessChain %_ptr_Uniform_uint %_Globals %int_0 %int_1
|
||
|
%87 = OpLoad %uint %86
|
||
|
%88 = OpISub %uint %87 %uint_1
|
||
|
%89 = OpISub %uint %88 %78
|
||
|
%90 = OpConvertUToF %float %89
|
||
|
%91 = OpCompositeConstruct %v2float %85 %90
|
||
|
%92 = OpLoad %v2uint %79
|
||
|
%93 = OpConvertUToF %v2float %92
|
||
|
%94 = OpFDiv %v2float %91 %93
|
||
|
%95 = OpFMul %v2float %94 %27
|
||
|
%96 = OpFSub %v2float %95 %29
|
||
|
%97 = OpFAdd %v2float %91 %29
|
||
|
%98 = OpFDiv %v2float %97 %93
|
||
|
%99 = OpFMul %v2float %98 %27
|
||
|
%100 = OpFSub %v2float %99 %29
|
||
|
%101 = OpVectorShuffle %v3float %70 %100 3 4 2
|
||
|
%102 = OpCompositeInsert %v3float %float_1 %101 2
|
||
|
%103 = OpIMul %uint %74 %uint_5
|
||
|
%104 = OpAccessChain %_ptr_Uniform_v4float %CulledObjectBoxBounds %int_0 %103
|
||
|
%105 = OpLoad %v4float %104
|
||
|
%106 = OpVectorShuffle %v3float %105 %105 0 1 2
|
||
|
%107 = OpIAdd %uint %103 %uint_1
|
||
|
%108 = OpAccessChain %_ptr_Uniform_v4float %CulledObjectBoxBounds %int_0 %107
|
||
|
%109 = OpLoad %v4float %108
|
||
|
%110 = OpVectorShuffle %v3float %109 %109 0 1 2
|
||
|
%111 = OpVectorShuffle %v2float %109 %71 0 1
|
||
|
%112 = OpVectorShuffle %v2float %96 %71 0 1
|
||
|
%113 = OpFOrdGreaterThan %v2bool %111 %112
|
||
|
%114 = OpAll %bool %113
|
||
|
%115 = OpFOrdLessThan %v3bool %106 %102
|
||
|
%116 = OpAll %bool %115
|
||
|
%117 = OpLogicalAnd %bool %114 %116
|
||
|
OpSelectionMerge %118 DontFlatten
|
||
|
OpBranchConditional %117 %119 %118
|
||
|
%119 = OpLabel
|
||
|
%120 = OpFAdd %v3float %106 %110
|
||
|
%121 = OpFMul %v3float %33 %120
|
||
|
%122 = OpCompositeExtract %float %96 0
|
||
|
%123 = OpCompositeExtract %float %96 1
|
||
|
%124 = OpCompositeConstruct %v3float %122 %123 %float_n1000
|
||
|
%125 = OpAccessChain %_ptr_Function_v3float %73 %int_0
|
||
|
OpStore %125 %124
|
||
|
%126 = OpCompositeExtract %float %100 0
|
||
|
%127 = OpCompositeConstruct %v3float %126 %123 %float_n1000
|
||
|
%128 = OpAccessChain %_ptr_Function_v3float %73 %int_1
|
||
|
OpStore %128 %127
|
||
|
%129 = OpCompositeExtract %float %100 1
|
||
|
%130 = OpCompositeConstruct %v3float %122 %129 %float_n1000
|
||
|
%131 = OpAccessChain %_ptr_Function_v3float %73 %int_2
|
||
|
OpStore %131 %130
|
||
|
%132 = OpCompositeConstruct %v3float %126 %129 %float_n1000
|
||
|
%133 = OpAccessChain %_ptr_Function_v3float %73 %int_3
|
||
|
OpStore %133 %132
|
||
|
%134 = OpCompositeConstruct %v3float %122 %123 %float_1
|
||
|
%135 = OpAccessChain %_ptr_Function_v3float %73 %int_4
|
||
|
OpStore %135 %134
|
||
|
%136 = OpCompositeConstruct %v3float %126 %123 %float_1
|
||
|
%137 = OpAccessChain %_ptr_Function_v3float %73 %int_5
|
||
|
OpStore %137 %136
|
||
|
%138 = OpCompositeConstruct %v3float %122 %129 %float_1
|
||
|
%139 = OpAccessChain %_ptr_Function_v3float %73 %int_6
|
||
|
OpStore %139 %138
|
||
|
%140 = OpCompositeConstruct %v3float %126 %129 %float_1
|
||
|
%141 = OpAccessChain %_ptr_Function_v3float %73 %int_7
|
||
|
OpStore %141 %140
|
||
|
%142 = OpIAdd %uint %103 %uint_2
|
||
|
%143 = OpAccessChain %_ptr_Uniform_v4float %CulledObjectBoxBounds %int_0 %142
|
||
|
%144 = OpLoad %v4float %143
|
||
|
%145 = OpVectorShuffle %v3float %144 %144 0 1 2
|
||
|
%146 = OpIAdd %uint %103 %uint_3
|
||
|
%147 = OpAccessChain %_ptr_Uniform_v4float %CulledObjectBoxBounds %int_0 %146
|
||
|
%148 = OpLoad %v4float %147
|
||
|
%149 = OpVectorShuffle %v3float %148 %148 0 1 2
|
||
|
%150 = OpIAdd %uint %103 %uint_4
|
||
|
%151 = OpAccessChain %_ptr_Uniform_v4float %CulledObjectBoxBounds %int_0 %150
|
||
|
%152 = OpLoad %v4float %151
|
||
|
%153 = OpVectorShuffle %v3float %152 %152 0 1 2
|
||
|
OpBranch %154
|
||
|
%154 = OpLabel
|
||
|
%155 = OpPhi %v3float %37 %119 %156 %157
|
||
|
%158 = OpPhi %v3float %35 %119 %159 %157
|
||
|
%160 = OpPhi %int %int_0 %119 %161 %157
|
||
|
%162 = OpSLessThan %bool %160 %int_8
|
||
|
OpLoopMerge %163 %157 Unroll
|
||
|
OpBranchConditional %162 %157 %163
|
||
|
%157 = OpLabel
|
||
|
%164 = OpAccessChain %_ptr_Function_v3float %73 %160
|
||
|
%165 = OpLoad %v3float %164
|
||
|
%166 = OpFSub %v3float %165 %121
|
||
|
%167 = OpDot %float %166 %145
|
||
|
%168 = OpDot %float %166 %149
|
||
|
%169 = OpDot %float %166 %153
|
||
|
%170 = OpCompositeConstruct %v3float %167 %168 %169
|
||
|
%159 = OpExtInst %v3float %1 FMin %158 %170
|
||
|
%156 = OpExtInst %v3float %1 FMax %155 %170
|
||
|
%161 = OpIAdd %int %160 %int_1
|
||
|
OpBranch %154
|
||
|
%163 = OpLabel
|
||
|
%171 = OpFOrdLessThan %v3bool %158 %44
|
||
|
%172 = OpAll %bool %171
|
||
|
%173 = OpFOrdGreaterThan %v3bool %155 %46
|
||
|
%174 = OpAll %bool %173
|
||
|
%175 = OpLogicalAnd %bool %172 %174
|
||
|
OpSelectionMerge %176 DontFlatten
|
||
|
OpBranchConditional %175 %177 %176
|
||
|
%177 = OpLabel
|
||
|
%178 = OpImageTexelPointer %_ptr_Image_uint %RWShadowTileNumCulledObjects %84 %uint_0
|
||
|
%179 = OpAtomicIAdd %uint %178 %uint_1 %uint_0 %uint_1
|
||
|
OpBranch %176
|
||
|
%176 = OpLabel
|
||
|
OpBranch %118
|
||
|
%118 = OpLabel
|
||
|
OpStore %out_var_SV_Target0 %22
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|