struct TurretRangeData { int x; int y; uint maxRadiusSquared; uint minRadiusSquared; float2 startVec; float2 endVec; }; cbuffer _30 { TurretRangeData _30_data[512] : packoffset(c0); uint _30_dataSize : packoffset(c1024); float4 _30_color : packoffset(c1025); }; Texture2D pretest : register(t0); SamplerState _pretest_sampler : register(s0); static float4 gl_FragCoord; static float4 fragColor; static float2 vUV; struct SPIRV_Cross_Input { float2 vUV : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 fragColor : SV_Target0; }; void frag_main() { fragColor = 0.0f.xxxx; for (int i = 0; uint(i) < _30_dataSize; i++) { float2 delta = gl_FragCoord.xy - float2(float(_30_data[i].x), float(_30_data[i].y)); float crossA = (_30_data[i].startVec.x * delta.y) - (_30_data[i].startVec.y * delta.x); float crossB = (_30_data[i].endVec.x * delta.y) - (_30_data[i].endVec.y * delta.x); float dist = (delta.x * delta.x) + (delta.y * delta.y); float _100 = crossA; float _102 = crossB; bool _104 = (_100 >= 0.0f) && (_102 <= 0.0f); bool _114; if (_104) { _114 = dist < float(_30_data[i].maxRadiusSquared); } else { _114 = _104; } bool _124; if (_114) { _124 = dist > float(_30_data[i].minRadiusSquared); } else { _124 = _114; } if (_124) { fragColor = _30_color; break; } } } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; vUV = stage_input.vUV; frag_main(); SPIRV_Cross_Output stage_output; stage_output.fragColor = fragColor; return stage_output; }