Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
Clojure
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Yul (Solidity IR)
Zig
Javascript
GIMPLE
Ygen
sway
hlsl source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
AMD RGA 2.10
AMD RGA 2.11
AMD RGA 2.12
AMD RGA 2.13
AMD RGA 2.9.1
Clang (assertions trunk)
Clang (trunk)
DXC (trunk)
DXC 1.6.2112
DXC 1.7.2207
DXC 1.7.2212
DXC 1.7.2308
DXC 1.8.2306-preview
DXC 1.8.2403
DXC 1.8.2403.1
DXC 1.8.2403.2
DXC 1.8.2405
DXC 1.8.2407
DXC 1.8.2502
DXC 1.8.2505
DXC 1.8.2505.1
RGA 2.6.1 (DXC 1.6.2112)
RGA 2.6.1 (DXC 1.7.2207)
RGA 2.6.2 (DXC 1.6.2112)
RGA 2.6.2 (DXC 1.7.2207)
RGA 2.6.2 (DXC trunk)
RGA 2.9.0 (DXC trunk)
Options
Source code
// The entry point and target profile are needed to compile this example: // -T ps_6_ -E fragment02 struct NagaConstants { int base_vertex; int base_instance; uint other; }; ConstantBuffer<NagaConstants> _NagaConstants: register(b6); struct FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX { float4 base_color; float4 directional_light_color; float3 be; float directional_light_exponent; float3 bi; uint mode; }; struct DirectionalCascadeX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX { row_major float4x4 view_projection; float texel_size; float far_bound; int _end_pad_0; int _end_pad_1; }; struct DirectionalLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX { DirectionalCascadeX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX cascades[4]; float4 color; float3 direction_to_light; uint flags; float shadow_depth_bias; float shadow_normal_bias; uint num_cascades; float cascades_overlap_proportion; uint depth_texture_base_index; uint render_layers; int _end_pad_0; int _end_pad_1; }; struct LightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX { DirectionalLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX directional_lights[10]; float4 ambient_color; uint4 cluster_dimensions; float4 cluster_factors; uint n_directional_lights; int spot_light_shadowmap_offset; uint environment_map_smallest_specular_mip_level; float environment_map_intensity; }; struct PointLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX { float4 light_custom_data; float4 color_inverse_square_range; float4 position_radius; uint flags; float shadow_depth_bias; float shadow_normal_bias; float spot_light_tan_angle; }; struct ReflectionProbeX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX { row_major float3x4 inverse_transpose_transform; int cubemap_index; float intensity; int _end_pad_0; int _end_pad_1; }; struct LightProbesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX { ReflectionProbeX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX reflection_probes[8]; int reflection_probe_count; int view_cubemap_index; uint smallest_specular_mip_level_for_view; float intensity_for_view; }; struct ColorGradingX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX { float exposure; float gamma; float pre_saturation; float post_saturation; }; struct ViewX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX { row_major float4x4 view_proj; row_major float4x4 unjittered_view_proj; row_major float4x4 inverse_view_proj; row_major float4x4 view; row_major float4x4 inverse_view; row_major float4x4 projection; row_major float4x4 inverse_projection; float3 world_position; float exposure; float4 viewport; float4 frustum[6]; ColorGradingX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX color_grading; float mip_bias; uint render_layers; int _end_pad_0; int _end_pad_1; }; struct GlobalsX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DUZ3MN5RGC3DTX { float time; float delta_time; uint frame_count; }; struct StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX { float4 base_color; float4 emissive; float perceptual_roughness; float metallic; float reflectance; float diffuse_transmission; float specular_transmission; float thickness; float ior; float attenuation_distance; float4 attenuation_color; uint flags; float alpha_cutoff; float parallax_depth_scale; float max_parallax_layer_count; float lightmap_exposure; uint max_relief_mapping_search_steps; uint deferred_lighting_pass_id; int _end_pad_0; }; struct PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX { StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX material; float3 diffuse_occlusion; float specular_occlusion; float4 frag_coord; float4 world_position; float3 world_normal; int _pad6_0; float3 N; int _pad7_0; float3 V; int _pad8_0; float3 lightmap_light; bool is_orthographic; uint flags; int _end_pad_0; int _end_pad_1; int _end_pad_2; }; struct EnvironmentMapLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX { float3 diffuse; int _pad1_0; float3 specular; int _end_pad_0; }; struct EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX { float3 irradiance; int _pad1_0; float3 radiance; int _end_pad_0; }; struct VertexOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX { float4 position : SV_Position; float4 world_position : LOC0; float3 world_normal : LOC1; float2 uv : LOC2; nointerpolation uint instance_index : LOC6; }; struct MeshX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OR4XAZLTX { row_major float3x4 model; row_major float3x4 previous_model; uint2 lightmap_uv_rect; int _pad3_0; int _pad3_1; row_major float2x4 inverse_transpose_model_a; float inverse_transpose_model_b; uint flags; int _end_pad_0; int _end_pad_1; }; struct FragmentOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX { float4 color : SV_Target0; }; static const uint FOG_MODE_OFFX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX = 0u; static const uint FOG_MODE_LINEARX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX = 1u; static const uint POINT_LIGHT_FLAGS_SHADOWS_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX = 1u; static const uint FOG_MODE_EXPONENTIAL_SQUAREDX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX = 3u; static const uint DIRECTIONAL_LIGHT_FLAGS_SHADOWS_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX = 1u; static const uint FOG_MODE_ATMOSPHERICX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX = 4u; static const uint FOG_MODE_EXPONENTIALX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX = 2u; static const float PIX_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = 3.1415927; static const uint POINT_LIGHT_FLAGS_SPOT_LIGHT_Y_NEGATIVEX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX = 2u; static const uint STANDARD_MATERIAL_FLAGS_FOG_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 256u; static const uint STANDARD_MATERIAL_FLAGS_ALPHA_MODE_OPAQUEX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 0u; static const uint STANDARD_MATERIAL_FLAGS_ATTENUATION_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 8192u; static const uint STANDARD_MATERIAL_FLAGS_ALPHA_MODE_RESERVED_BITSX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 3758096384u; static const float EX_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = 2.7182817; static const uint MESH_FLAGS_SHADOW_RECEIVER_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OR4XAZLTX = 1u; static const uint MESH_FLAGS_TRANSMITTED_SHADOW_RECEIVER_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OR4XAZLTX = 2u; static const float2 SPIRAL_OFFSET_1_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = float2(-0.0, -0.875); static const float2 SPIRAL_OFFSET_7_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = float2(0.125, 0.0); static const float2 SPIRAL_OFFSET_5_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = float2(-0.0, 0.375); static const float2 SPIRAL_OFFSET_4_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = float2(0.3536, -0.3536); static const float2 SPIRAL_OFFSET_3_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = float2(-0.625, -0.0); static const float2 SPIRAL_OFFSET_0_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = float2(-0.7071, 0.7071); static const float2 SPIRAL_OFFSET_6_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = float2(-0.1768, -0.1768); static const float2 SPIRAL_OFFSET_2_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX = float2(0.5303, 0.5303); static const float3 flip_zX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX = float3(1.0, 1.0, -1.0); static const uint STANDARD_MATERIAL_FLAGS_OCCLUSION_TEXTURE_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 8u; static const uint STANDARD_MATERIAL_FLAGS_BASE_COLOR_TEXTURE_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 1u; static const uint STANDARD_MATERIAL_FLAGS_EMISSIVE_TEXTURE_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 2u; static const uint STANDARD_MATERIAL_FLAGS_UNLIT_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 32u; static const uint STANDARD_MATERIAL_FLAGS_DOUBLE_SIDED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 16u; static const uint STANDARD_MATERIAL_FLAGS_METALLIC_ROUGHNESS_TEXTURE_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX = 4u; ByteAddressBuffer point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(t2); cbuffer lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(b2) { LightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX; } Texture3D<float4> dt_lut_textureX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X : register(t22); SamplerState dt_lut_samplerX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X : register(s3); cbuffer fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(b3) { FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX; } cbuffer viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(b1) { ViewX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX; } cbuffer light_probesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(b4) { LightProbesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX light_probesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX; } SamplerState environment_map_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(s2); TextureCube<float4> diffuse_environment_mapsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX[8] : register(t6); TextureCube<float4> specular_environment_mapsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX[8] : register(t14); ByteAddressBuffer cluster_light_index_listsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(t3); ByteAddressBuffer cluster_offsets_and_countsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(t4); Texture2DArray<float> directional_shadow_texturesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(t1); SamplerComparisonState directional_shadow_textures_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(s1); cbuffer globalsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(b0) { GlobalsX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DUZ3MN5RGC3DTX globalsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX; } TextureCubeArray<float> point_shadow_texturesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(t0); SamplerComparisonState point_shadow_textures_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(s0); Texture2D<float4> view_transmission_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(t23); SamplerState view_transmission_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX : register(s4); SamplerState occlusion_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(s8); Texture2D<float4> metallic_roughness_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(t27); Texture2D<float4> base_color_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(t25); Texture2D<float4> emissive_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(t26); SamplerState metallic_roughness_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(s7); cbuffer materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(b5) { StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX; } SamplerState emissive_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(s6); Texture2D<float4> occlusion_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(t28); SamplerState base_color_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX : register(s5); ByteAddressBuffer meshX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7MJUW4ZDJNZTXGX : register(t24); struct FragmentInput_fragment { float4 world_position_7 : LOC0; float3 world_normal_3 : LOC1; float2 uv_3 : LOC2; nointerpolation uint instance_index : LOC6; float4 position : SV_Position; bool is_front_5 : SV_IsFrontFace; }; float2 F_ABX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float perceptual_roughness, float NoV) { float4 c0_ = float4(-1.0, -0.0275, -0.572, 0.022); float4 c1_ = float4(1.0, 0.0425, 1.04, -0.04); float4 r = ((perceptual_roughness * c0_) + c1_); float a004_ = ((min((r.x * r.x), exp2((-9.28 * NoV))) * r.x) + r.y); return ((float2(-1.04, 1.04) * a004_) + r.zw); } float perceptualRoughnessToRoughnessX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float perceptualRoughness) { float clampedPerceptualRoughness = clamp(perceptualRoughness, 0.089, 1.0); return (clampedPerceptualRoughness * clampedPerceptualRoughness); } float getDistanceAttenuationX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float distanceSquare, float inverseRangeSquared) { float factor = (distanceSquare * inverseRangeSquared); float smoothFactor = saturate((1.0 - (factor * factor))); float attenuation = (smoothFactor * smoothFactor); return ((attenuation * 1.0) / max(distanceSquare, 0.0001)); } float D_GGXX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float roughness, float NoH, float3 h) { float oneMinusNoHSquared = (1.0 - (NoH * NoH)); float a = (NoH * roughness); float k = (roughness / (oneMinusNoHSquared + (a * a))); float d = ((k * k) * 0.31830987); return d; } float V_SmithGGXCorrelatedX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float roughness_1, float NoV_1, float NoL) { float a2_ = (roughness_1 * roughness_1); float lambdaV = (NoL * sqrt((((NoV_1 - (a2_ * NoV_1)) * NoV_1) + a2_))); float lambdaL = (NoV_1 * sqrt((((NoL - (a2_ * NoL)) * NoL) + a2_))); float v_1 = (0.5 / (lambdaV + lambdaL)); return v_1; } float3 F_Schlick_vecX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float3 f0_, float f90_, float VoH) { return (f0_ + (((f90_).xxx - f0_) * pow((1.0 - VoH), 5.0))); } float3 fresnelX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float3 f0_1, float LoH) { float f90_2 = saturate(dot(f0_1, (16.5).xxx)); const float3 _e6 = F_Schlick_vecX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(f0_1, f90_2, LoH); return _e6; } float3 specularX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float3 f0_2, float roughness_2, float3 h_1, float NoV_2, float NoL_1, float NoH_1, float LoH_1, float specularIntensity, float2 f_ab) { float3 Fr = (float3)0; const float _e3 = D_GGXX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(roughness_2, NoH_1, h_1); const float _e6 = V_SmithGGXCorrelatedX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(roughness_2, NoV_2, NoL_1); const float3 _e9 = fresnelX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(f0_2, LoH_1); Fr = (((specularIntensity * _e3) * _e6) * _e9); float3 _expr25 = Fr; Fr = (_expr25 * ((1.0).xxx + (f0_2 * ((1.0 / f_ab.x) - 1.0)))); float3 _expr27 = Fr; return _expr27; } float F_SchlickX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float f0_3, float f90_1, float VoH_1) { return (f0_3 + ((f90_1 - f0_3) * pow((1.0 - VoH_1), 5.0))); } float Fd_BurleyX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float roughness_3, float NoV_3, float NoL_2, float LoH_2) { float f90_3 = (0.5 + (((2.0 * roughness_3) * LoH_2) * LoH_2)); const float _e10 = F_SchlickX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(1.0, f90_3, NoL_2); const float _e13 = F_SchlickX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(1.0, f90_3, NoV_3); return ((_e10 * _e13) * 0.31830987); } float3 point_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float3 world_position, uint light_id, float roughness_4, float NdotV, float3 N, float3 V, float3 R, float3 F0_, float2 f_ab_1, float3 diffuseColor) { float3 L = (float3)0; float3 H = (float3)0; float NoL_3 = (float)0; float NoH_2 = (float)0; float LoH_3 = (float)0; float4 _expr6 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(32+light_id*64+0)); float3 light_to_frag = (_expr6.xyz - world_position.xyz); float distance_square = dot(light_to_frag, light_to_frag); float _expr13 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(12+16+light_id*64+0)); const float _e14 = getDistanceAttenuationX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(distance_square, _expr13); float3 centerToRay = ((dot(light_to_frag, R) * R) - light_to_frag); float _expr21 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(12+32+light_id*64+0)); float3 closestPoint = (light_to_frag + (centerToRay * saturate((_expr21 * rsqrt(dot(centerToRay, centerToRay)))))); float LspecLengthInverse = rsqrt(dot(closestPoint, closestPoint)); float _expr32 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(12+32+light_id*64+0)); float normalizationFactor = (roughness_4 / saturate((roughness_4 + ((_expr32 * 0.5) * LspecLengthInverse)))); float specularIntensity_1 = (normalizationFactor * normalizationFactor); L = (closestPoint * LspecLengthInverse); float3 _expr44 = L; H = normalize((_expr44 + V)); float3 _expr49 = L; NoL_3 = saturate(dot(N, _expr49)); float3 _expr53 = H; NoH_2 = saturate(dot(N, _expr53)); float3 _expr57 = L; float3 _expr58 = H; LoH_3 = saturate(dot(_expr57, _expr58)); float3 _expr62 = H; float _expr63 = NoL_3; float _expr64 = NoH_2; float _expr65 = LoH_3; const float3 _e69 = specularX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(F0_, roughness_4, _expr62, NdotV, _expr63, _expr64, _expr65, specularIntensity_1, f_ab_1); L = normalize(light_to_frag); float3 _expr71 = L; H = normalize((_expr71 + V)); float3 _expr74 = L; NoL_3 = saturate(dot(N, _expr74)); float3 _expr77 = H; NoH_2 = saturate(dot(N, _expr77)); float3 _expr80 = L; float3 _expr81 = H; LoH_3 = saturate(dot(_expr80, _expr81)); float _expr84 = NoL_3; float _expr85 = LoH_3; const float _e86 = Fd_BurleyX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(roughness_4, NdotV, _expr84, _expr85); float3 diffuse = (diffuseColor * _e86); float4 _expr91 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(16+light_id*64+0)); float _expr94 = NoL_3; return (((diffuse + _e69) * _expr91.xyz) * (_e14 * _expr94)); } float3 spot_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float3 world_position_1, uint light_id_1, float roughness_5, float NdotV_1, float3 N_1, float3 V_1, float3 R_1, float3 F0_1, float2 f_ab_2, float3 diffuseColor_1) { float3 spot_dir = (float3)0; const float3 _e10 = point_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(world_position_1, light_id_1, roughness_5, NdotV_1, N_1, V_1, R_1, F0_1, f_ab_2, diffuseColor_1); float _expr16 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(0+0+light_id_1*64+0)); float _expr20 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(4+0+light_id_1*64+0)); spot_dir = float3(_expr16, 0.0, _expr20); float _expr27 = spot_dir.x; float _expr29 = spot_dir.x; float _expr33 = spot_dir.z; float _expr35 = spot_dir.z; spot_dir.y = sqrt(max(0.0, ((1.0 - (_expr27 * _expr29)) - (_expr33 * _expr35)))); uint _expr41 = asuint(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(48+light_id_1*64+0)); if (((_expr41 & POINT_LIGHT_FLAGS_SPOT_LIGHT_Y_NEGATIVEX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) != 0u)) { float _expr48 = spot_dir.y; spot_dir.y = -(_expr48); } float4 _expr51 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(32+light_id_1*64+0)); float3 light_to_frag_1 = (_expr51.xyz - world_position_1.xyz); float3 _expr55 = spot_dir; float cd = dot(-(_expr55), normalize(light_to_frag_1)); float _expr61 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(8+0+light_id_1*64+0)); float _expr65 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(12+0+light_id_1*64+0)); float attenuation_1 = saturate(((cd * _expr61) + _expr65)); float spot_attenuation = (attenuation_1 * attenuation_1); return (_e10 * spot_attenuation); } float3 directional_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(uint light_id_2, float roughness_6, float NdotV_2, float3 normal, float3 view, float3 R_2, float3 F0_2, float2 f_ab_3, float3 diffuseColor_2) { float3 _expr5 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_2].direction_to_light; float3 incident_light = _expr5.xyz; float3 half_vector = normalize((incident_light + view)); float NoL_4 = saturate(dot(normal, incident_light)); float NoH_3 = saturate(dot(normal, half_vector)); float LoH_4 = saturate(dot(incident_light, half_vector)); const float _e19 = Fd_BurleyX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(roughness_6, NdotV_2, NoL_4, LoH_4); float3 diffuse_1 = (diffuseColor_2 * _e19); const float3 _e25 = specularX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(F0_2, roughness_6, half_vector, NdotV_2, NoL_4, NoH_3, LoH_4, 1.0, f_ab_3); float4 _expr28 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_2].color; return (((_e25 + diffuse_1) * _expr28.xyz) * NoL_4); } float3 powsafeX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(float3 color, float power) { return (pow(abs(color), (power).xxx) * sign(color)); } float3 screen_space_ditherX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(float2 frag_coord) { float3 dither = (float3)0; dither = (dot(float2(171.0, 231.0), frag_coord)).xxx.xxx; float3 _expr8 = dither; dither = frac((_expr8.xyz / float3(103.0, 71.0, 97.0))); float3 _expr16 = dither; return ((_expr16 - (0.5).xxx) / (255.0).xxx); } float tonemapping_luminanceX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(float3 v) { return dot(v, float3(0.2126, 0.7152, 0.0722)); } float3 saturationX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(float3 color_1, float saturationAmount) { const float _e1 = tonemapping_luminanceX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(color_1); return lerp((_e1).xxx, color_1, (saturationAmount).xxx); } float3 sample_current_lutX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(float3 p) { float4 _expr4 = dt_lut_textureX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X.SampleLevel(dt_lut_samplerX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X, p, 0.0); return _expr4.xyz; } float3 sample_tony_mc_mapface_lutX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(float3 stimulus) { float3 uv = (float3)0; uv = (((stimulus / (stimulus + (1.0).xxx)) * 0.9791667) + (0.010416667).xxx); float3 _expr11 = uv; const float3 _e13 = sample_current_lutX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(saturate(_expr11)); return _e13.xyz; } float4 tone_mappingX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(float4 in_1, ColorGradingX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX color_grading) { float3 color_2 = (float3)0; color_2 = max(in_1.xyz, (0.0).xxx); float3 _expr7 = color_2; const float3 _e9 = saturationX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr7, color_grading.pre_saturation); color_2 = _e9; float3 _expr10 = color_2; const float3 _e12 = powsafeX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr10, color_grading.gamma); color_2 = _e12; float3 _expr13 = color_2; const float3 _e17 = powsafeX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X((2.0).xxx, color_grading.exposure); color_2 = (_expr13 * _e17); float3 _expr19 = color_2; color_2 = max(_expr19, (0.0).xxx); float3 _expr23 = color_2; const float3 _e24 = sample_tony_mc_mapface_lutX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr23); color_2 = _e24; float3 _expr25 = color_2; const float3 _e27 = saturationX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr25, color_grading.post_saturation); color_2 = _e27; float3 _expr28 = color_2; return float4(_expr28, in_1.w); } float3 EnvBRDFApproxX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(float3 f0_4, float2 f_ab_4) { return ((f0_4 * f_ab_4.x) + (f_ab_4.y).xxx); } float3 ambient_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MFWWE2LFNZ2AX(float4 world_position_2, float3 world_normal, float3 V_2, float NdotV_3, float3 diffuse_color, float3 specular_color, float perceptual_roughness_1, float3 occlusion) { const float2 _e2 = F_ABX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(1.0, NdotV_3); const float3 _e4 = EnvBRDFApproxX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(diffuse_color, _e2); const float2 _e6 = F_ABX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(perceptual_roughness_1, NdotV_3); const float3 _e8 = EnvBRDFApproxX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(specular_color, _e6); float specular_occlusion_1 = saturate(dot(specular_color, (16.5).xxx)); float4 _expr18 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.ambient_color; return (((_e4 + (_e8 * specular_occlusion_1)) * _expr18.xyz) * occlusion); } uint NagaNumLevelsCube(TextureCube<float4> tex) { uint4 ret; tex.GetDimensions(0, ret.x, ret.y, ret.z); return ret.z; } EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX compute_radiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX(float perceptual_roughness_2, float3 N_2, float3 R_3, float3 world_position_3) { EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX radiances = (EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX)0; int cubemap_index = -1; float intensity = 1.0; int reflection_probe_index = 0; bool loop_init = true; while(true) { if (!loop_init) { int _expr42 = reflection_probe_index; reflection_probe_index = (_expr42 + 1); } loop_init = false; int _expr4 = reflection_probe_index; int _expr7 = light_probesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.reflection_probe_count; if ((_expr4 < _expr7)) { } else { break; } { int _expr11 = reflection_probe_index; ReflectionProbeX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX reflection_probe = light_probesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.reflection_probes[_expr11]; float4x4 inverse_transpose_transform = float4x4(reflection_probe.inverse_transpose_transform[0], reflection_probe.inverse_transpose_transform[1], reflection_probe.inverse_transpose_transform[2], float4(0.0, 0.0, 0.0, 1.0)); float4x4 inverse_transform = transpose(inverse_transpose_transform); float3 probe_space_pos = mul(float4(world_position_3, 1.0), inverse_transform).xyz; if (all((abs(probe_space_pos) <= (0.5).xxx))) { cubemap_index = reflection_probe.cubemap_index; intensity = reflection_probe.intensity; break; } } } int _expr44 = cubemap_index; if ((_expr44 < 0)) { int _expr49 = light_probesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.view_cubemap_index; cubemap_index = _expr49; float _expr52 = light_probesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.intensity_for_view; intensity = _expr52; } int _expr53 = cubemap_index; if ((_expr53 < 0)) { radiances.irradiance = (0.0).xxx; radiances.radiance = (0.0).xxx; EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX _expr63 = radiances; const EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX environmentmapradiancesx_naga_oil_mod_xmjsxm6k7obrheor2mvxhm2lsn5xg2zloorpw2ylqx = _expr63; return environmentmapradiancesx_naga_oil_mod_xmjsxm6k7obrheor2mvxhm2lsn5xg2zloorpw2ylqx; } int _expr65 = cubemap_index; float radiance_level = (perceptual_roughness_2 * float((NagaNumLevelsCube(specular_environment_mapsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX[NonUniformResourceIndex(_expr65)]) - 1u))); int _expr75 = cubemap_index; float4 _expr84 = diffuse_environment_mapsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX[NonUniformResourceIndex(_expr75)].SampleLevel(environment_map_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, float3(N_2.xy, -(N_2.z)), 0.0); float _expr86 = intensity; radiances.irradiance = (_expr84.xyz * _expr86); int _expr90 = cubemap_index; float4 _expr98 = specular_environment_mapsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX[NonUniformResourceIndex(_expr90)].SampleLevel(environment_map_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, float3(R_3.xy, -(R_3.z)), radiance_level); float _expr100 = intensity; radiances.radiance = (_expr98.xyz * _expr100); EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX _expr102 = radiances; const EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX environmentmapradiancesx_naga_oil_mod_xmjsxm6k7obrheor2mvxhm2lsn5xg2zloorpw2ylqx_1 = _expr102; return environmentmapradiancesx_naga_oil_mod_xmjsxm6k7obrheor2mvxhm2lsn5xg2zloorpw2ylqx_1; } EnvironmentMapLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX environment_map_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX(float perceptual_roughness_3, float roughness_7, float3 diffuse_color_1, float NdotV_4, float2 f_ab_5, float3 N_3, float3 R_4, float3 F0_3, float3 world_position_4) { EnvironmentMapLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX out_1 = (EnvironmentMapLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX)0; const EnvironmentMapRadiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX _e4 = compute_radiancesX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX(perceptual_roughness_3, N_3, R_4, world_position_4); float specular_occlusion_2 = saturate(dot(F0_3, (16.5).xxx)); float3 Fr_1 = (max(((1.0 - roughness_7)).xxx, F0_3) - F0_3); float3 kS = (F0_3 + (Fr_1 * pow((1.0 - NdotV_4), 5.0))); float Ess = (f_ab_5.x + f_ab_5.y); float3 FssEss = ((kS * Ess) * specular_occlusion_2); float Ems = (1.0 - Ess); float3 Favg = (F0_3 + (((1.0).xxx - F0_3) / (21.0).xxx)); float3 Fms = ((FssEss * Favg) / ((1.0).xxx - (Ems * Favg))); float3 FmsEms = (Fms * Ems); float3 Edss = ((1.0).xxx - (FssEss + FmsEms)); float3 kD = (diffuse_color_1 * Edss); out_1.diffuse = ((FmsEms + kD) * _e4.irradiance); out_1.specular = (FssEss * _e4.radiance); EnvironmentMapLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX _expr59 = out_1; const EnvironmentMapLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX environmentmaplightx_naga_oil_mod_xmjsxm6k7obrheor2mvxhm2lsn5xg2zloorpw2ylqx = _expr59; return environmentmaplightx_naga_oil_mod_xmjsxm6k7obrheor2mvxhm2lsn5xg2zloorpw2ylqx; } uint view_z_to_z_sliceX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(float view_z, bool is_orthographic) { uint z_slice = 0u; if (is_orthographic) { float _expr6 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_factors.z; float _expr11 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_factors.w; z_slice = uint(floor(((view_z - _expr6) * _expr11))); } else { float _expr21 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_factors.z; float _expr26 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_factors.w; z_slice = uint((((log(-(view_z)) * _expr21) - _expr26) + 1.0)); } uint _expr31 = z_slice; uint _expr35 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_dimensions.z; return min(_expr31, (_expr35 - 1u)); } uint fragment_cluster_indexX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(float2 frag_coord_1, float view_z_1, bool is_orthographic_1) { float4 _expr3 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.viewport; float4 _expr8 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_factors; uint2 xy = uint2(floor(((frag_coord_1 - _expr3.xy) * _expr8.xy))); const uint _e15 = view_z_to_z_sliceX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(view_z_1, is_orthographic_1); uint _expr20 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_dimensions.x; uint _expr27 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_dimensions.z; uint _expr33 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.cluster_dimensions.w; return min(((((xy.y * _expr20) + xy.x) * _expr27) + _e15), (_expr33 - 1u)); } uint3 unpack_offset_and_countsX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(uint cluster_index) { uint4 _expr4 = asuint(cluster_offsets_and_countsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(cluster_index*16+0)); return _expr4.xyz; } uint get_light_idX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(uint index) { uint _expr4 = asuint(cluster_light_index_listsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(index*4+0)); return _expr4; } float4 cluster_debug_visualizationX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(float4 output_color, float view_z_2, bool is_orthographic_2, uint3 offset_and_counts, uint cluster_index_1) { return output_color; } float interleaved_gradient_noiseX_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX(float2 pixel_coordinates, uint frame) { float2 xy_1 = (pixel_coordinates + ((5.588238 * float((frame % 64u)))).xx); return frac((52.982918 * frac(((0.06711056 * xy_1.x) + (0.00583715 * xy_1.y))))); } float sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX(float2 light_local, float depth, int array_index) { float _expr5 = directional_shadow_texturesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.SampleCmpLevelZero(directional_shadow_textures_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, float3(light_local, array_index), depth); return _expr5; } uint2 NagaDepthDimensions2DArray(Texture2DArray<float> tex) { uint4 ret; tex.GetDimensions(0, ret.x, ret.y, ret.z, ret.w); return ret.xy; } float sample_shadow_map_castano_thirteenX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX(float2 light_local_1, float depth_1, int array_index_1) { float2 base_uv = (float2)0; float sum = 0.0; float2 shadow_map_size = float2(NagaDepthDimensions2DArray(directional_shadow_texturesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX)); float2 inv_shadow_map_size = ((1.0).xx / shadow_map_size); float2 uv_4 = (light_local_1 * shadow_map_size); base_uv = floor((uv_4 + (0.5).xx)); float _expr18 = base_uv.x; float s = ((uv_4.x + 0.5) - _expr18); float _expr24 = base_uv.y; float t = ((uv_4.y + 0.5) - _expr24); float2 _expr27 = base_uv; base_uv = (_expr27 - (0.5).xx); float2 _expr30 = base_uv; base_uv = (_expr30 * inv_shadow_map_size); float uw0_ = (4.0 - (3.0 * s)); float uw2_ = (1.0 + (3.0 * s)); float u0_ = (((3.0 - (2.0 * s)) / uw0_) - 2.0); float u1_ = ((3.0 + s) / 7.0); float u2_ = ((s / uw2_) + 2.0); float vw0_ = (4.0 - (3.0 * t)); float vw2_ = (1.0 + (3.0 * t)); float v0_ = (((3.0 - (2.0 * t)) / vw0_) - 2.0); float v1_ = ((3.0 + t) / 7.0); float v2_ = ((t / vw2_) + 2.0); float2 _expr77 = base_uv; const float _e83 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr77 + (float2(u0_, v0_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr86 = sum; sum = (_expr86 + ((uw0_ * vw0_) * _e83)); float2 _expr89 = base_uv; const float _e93 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr89 + (float2(u1_, v0_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr95 = sum; sum = (_expr95 + ((7.0 * vw0_) * _e93)); float2 _expr98 = base_uv; const float _e102 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr98 + (float2(u2_, v0_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr104 = sum; sum = (_expr104 + ((uw2_ * vw0_) * _e102)); float2 _expr107 = base_uv; const float _e111 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr107 + (float2(u0_, v1_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr113 = sum; sum = (_expr113 + ((uw0_ * 7.0) * _e111)); float2 _expr116 = base_uv; const float _e120 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr116 + (float2(u1_, v1_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr122 = sum; sum = (_expr122 + ((7.0 * 7.0) * _e120)); float2 _expr125 = base_uv; const float _e129 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr125 + (float2(u2_, v1_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr131 = sum; sum = (_expr131 + ((uw2_ * 7.0) * _e129)); float2 _expr134 = base_uv; const float _e138 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr134 + (float2(u0_, v2_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr140 = sum; sum = (_expr140 + ((uw0_ * vw2_) * _e138)); float2 _expr143 = base_uv; const float _e147 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr143 + (float2(u1_, v2_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr149 = sum; sum = (_expr149 + ((7.0 * vw2_) * _e147)); float2 _expr152 = base_uv; const float _e156 = sample_shadow_map_hardwareX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX((_expr152 + (float2(u2_, v2_) * inv_shadow_map_size)), depth_1, array_index_1); float _expr158 = sum; sum = (_expr158 + ((uw2_ * vw2_) * _e156)); float _expr160 = sum; return (_expr160 * 0.0069444445); } float sample_shadow_mapX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX(float2 light_local_2, float depth_2, int array_index_2, float texel_size) { const float _e3 = sample_shadow_map_castano_thirteenX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX(light_local_2, depth_2, array_index_2); return _e3; } float3 hsv2rgbX_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX(float hue, float saturation, float value) { float3 rgb = clamp((abs((fmod((((hue * 6.0)).xxx + float3(0.0, 4.0, 2.0)), (6.0).xxx) - (3.0).xxx)) - (1.0).xxx), (0.0).xxx, (1.0).xxx); return (value * lerp((1.0).xxx, rgb, (saturation).xxx)); } float fetch_point_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(uint light_id_3, float4 frag_position, float3 surface_normal) { float4 _expr6 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(32+light_id_3*64+0)); float3 surface_to_light = (_expr6.xyz - frag_position.xyz); float3 surface_to_light_abs = abs(surface_to_light); float distance_to_light = max(surface_to_light_abs.x, max(surface_to_light_abs.y, surface_to_light_abs.z)); float _expr18 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(56+light_id_3*64+0)); float3 normal_offset = ((_expr18 * distance_to_light) * surface_normal.xyz); float _expr23 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(52+light_id_3*64+0)); float3 depth_offset = (_expr23 * normalize(surface_to_light.xyz)); float3 offset_position_2 = ((frag_position.xyz + normal_offset) + depth_offset); float4 _expr32 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(32+light_id_3*64+0)); float3 frag_ls = (offset_position_2.xyz - _expr32.xyz); float3 abs_position_ls = abs(frag_ls); float major_axis_magnitude = max(abs_position_ls.x, max(abs_position_ls.y, abs_position_ls.z)); float4 _expr43 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(0+light_id_3*64+0)); float4 _expr47 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(0+light_id_3*64+0)); float2 zw = ((-(major_axis_magnitude) * _expr43.xy) + _expr47.zw); float depth_3 = (zw.x / zw.y); float _expr58 = point_shadow_texturesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.SampleCmpLevelZero(point_shadow_textures_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, float4((frag_ls * flip_zX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX), int(light_id_3)), depth_3); return _expr58; } float fetch_spot_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(uint light_id_4, float4 frag_position_1, float3 surface_normal_1) { float3 spot_dir_1 = (float3)0; float sign_ = -1.0; float4 _expr7 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load4(32+light_id_4*64+0)); float3 surface_to_light_1 = (_expr7.xyz - frag_position_1.xyz); float _expr13 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(0+0+light_id_4*64+0)); float _expr17 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(4+0+light_id_4*64+0)); spot_dir_1 = float3(_expr13, 0.0, _expr17); float _expr24 = spot_dir_1.x; float _expr26 = spot_dir_1.x; float _expr30 = spot_dir_1.z; float _expr32 = spot_dir_1.z; spot_dir_1.y = sqrt(max(0.0, ((1.0 - (_expr24 * _expr26)) - (_expr30 * _expr32)))); uint _expr38 = asuint(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(48+light_id_4*64+0)); if (((_expr38 & POINT_LIGHT_FLAGS_SPOT_LIGHT_Y_NEGATIVEX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) != 0u)) { float _expr45 = spot_dir_1.y; spot_dir_1.y = -(_expr45); } float3 _expr47 = spot_dir_1; float3 fwd = -(_expr47); float distance_to_light_1 = dot(fwd, surface_to_light_1); float _expr53 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(52+light_id_4*64+0)); float _expr59 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(56+light_id_4*64+0)); float3 offset_position_3 = ((-(surface_to_light_1) + (_expr53 * normalize(surface_to_light_1))) + ((surface_normal_1.xyz * _expr59) * distance_to_light_1)); if ((fwd.z >= 0.0)) { sign_ = 1.0; } float _expr70 = sign_; float a_1 = (-1.0 / (fwd.z + _expr70)); float b = ((fwd.x * fwd.y) * a_1); float _expr78 = sign_; float _expr85 = sign_; float _expr87 = sign_; float3 up_dir = float3((1.0 + (((_expr78 * fwd.x) * fwd.x) * a_1)), (_expr85 * b), (-(_expr87) * fwd.x)); float _expr93 = sign_; float3 right_dir = float3(-(b), (-(_expr93) - ((fwd.y * fwd.y) * a_1)), fwd.y); float3x3 light_inv_rot = float3x3(right_dir, up_dir, fwd); float3 projected_position = mul(light_inv_rot, offset_position_3); float _expr106 = asfloat(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(60+light_id_4*64+0)); float f_div_minus_z = (1.0 / (_expr106 * -(projected_position.z))); float2 shadow_xy_ndc = (projected_position.xy * f_div_minus_z); float2 shadow_uv = ((shadow_xy_ndc * float2(0.5, -0.5)) + float2(0.5, 0.5)); float depth_4 = (0.1 / -(projected_position.z)); int _expr128 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.spot_light_shadowmap_offset; const float _e131 = sample_shadow_mapX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX(shadow_uv, depth_4, (int(light_id_4) + _expr128), 0.013427734); return _e131; } uint get_cascade_indexX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(uint light_id_5, float view_z_3) { uint i = 0u; bool loop_init_1 = true; while(true) { if (!loop_init_1) { uint _expr19 = i; i = (_expr19 + 1u); } loop_init_1 = false; uint _expr6 = i; uint _expr8 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_5].num_cascades; if ((_expr6 < _expr8)) { } else { break; } { uint _expr13 = i; float _expr16 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_5].cascades[_expr13].far_bound; if ((-(view_z_3) < _expr16)) { uint _expr18 = i; return _expr18; } } } uint _expr23 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_5].num_cascades; return _expr23; } float sample_directional_cascadeX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(uint light_id_6, uint cascade_index, float4 frag_position_2, float3 surface_normal_2) { float _expr9 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_6].shadow_normal_bias; float _expr11 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_6].cascades[cascade_index].texel_size; float3 normal_offset_1 = ((_expr9 * _expr11) * surface_normal_2.xyz); float _expr16 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_6].shadow_depth_bias; float3 _expr18 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_6].direction_to_light; float3 depth_offset_1 = (_expr16 * _expr18.xyz); float4 offset_position_4 = float4(((frag_position_2.xyz + normal_offset_1) + depth_offset_1), frag_position_2.w); float4x4 _expr28 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_6].cascades[cascade_index].view_projection; float4 offset_position_clip = mul(offset_position_4, _expr28); if ((offset_position_clip.w <= 0.0)) { return 1.0; } float3 offset_position_ndc = (offset_position_clip.xyz / (offset_position_clip.w).xxx); if (((any((offset_position_ndc.xy < (-1.0).xx)) || (offset_position_ndc.z < 0.0)) || any((offset_position_ndc > (1.0).xxx)))) { return 1.0; } float2 flip_correction = float2(0.5, -0.5); float2 light_local_3 = ((offset_position_ndc.xy * flip_correction) + float2(0.5, 0.5)); float depth_5 = offset_position_ndc.z; uint _expr64 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_6].depth_texture_base_index; int array_index_3 = int((_expr64 + cascade_index)); float _expr68 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_6].cascades[cascade_index].texel_size; const float _e69 = sample_shadow_mapX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5PXGYLNOBWGS3THX(light_local_3, depth_5, array_index_3, _expr68); return _e69; } float fetch_directional_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(uint light_id_7, float4 frag_position_3, float3 surface_normal_3, float view_z_4) { float shadow = (float)0; const uint _e5 = get_cascade_indexX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(light_id_7, view_z_4); uint _expr7 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_7].num_cascades; if ((_e5 >= _expr7)) { return 1.0; } const float _e12 = sample_directional_cascadeX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(light_id_7, _e5, frag_position_3, surface_normal_3); shadow = _e12; uint next_cascade_index = (_e5 + 1u); uint _expr17 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_7].num_cascades; if ((next_cascade_index < _expr17)) { float this_far_bound = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_7].cascades[_e5].far_bound; float _expr25 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[light_id_7].cascades_overlap_proportion; float next_near_bound = ((1.0 - _expr25) * this_far_bound); if ((-(view_z_4) >= next_near_bound)) { const float _e30 = sample_directional_cascadeX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(light_id_7, next_cascade_index, frag_position_3, surface_normal_3); float _expr31 = shadow; shadow = lerp(_expr31, _e30, ((-(view_z_4) - next_near_bound) / (this_far_bound - next_near_bound))); } } float _expr37 = shadow; return _expr37; } float4 approximate_inverse_tone_mappingX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(float4 in_2, ColorGradingX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX color_grading_1) { const float4 _e2 = tone_mappingX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(in_2, color_grading_1); float approximate_ratio = (length(in_2.xyz) / length(_e2.xyz)); return float4((in_2.xyz * approximate_ratio), in_2.w); } float4 fetch_transmissive_background_non_roughX_naga_oil_mod_XMJSXM6K7OBRHEOR2ORZGC3TTNVUXG43JN5XAX(float2 offset_position, float3 frag_coord_2) { float4 background_color = (float4)0; float4 _expr4 = view_transmission_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.SampleLevel(view_transmission_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, offset_position, 0.0); background_color = _expr4; float4 _expr6 = background_color; ColorGradingX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX _expr9 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.color_grading; const float4 _e10 = approximate_inverse_tone_mappingX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr6, _expr9); background_color = _e10; float4 _expr11 = background_color; return _expr11; } float4 fetch_transmissive_backgroundX_naga_oil_mod_XMJSXM6K7OBRHEOR2ORZGC3TTNVUXG43JN5XAX(float2 offset_position_1, float3 frag_coord_3, float view_z_5, float perceptual_roughness_4) { float4 result = (0.0).xxxx; int i_1 = 0; float2 spiral_offset = (float2)0; float4 sample_ = (float4)0; float _expr6 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.viewport.z; float _expr10 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.viewport.w; float aspect = (_expr6 / _expr10); float blur_intensity = ((perceptual_roughness_4 * perceptual_roughness_4) / view_z_5); int num_spirals = int(ceil((float(8) / 8.0))); const float _e25 = interleaved_gradient_noiseX_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX(frag_coord_3.xy, 0u); int pixel_checkboard = ((int(frag_coord_3.x) + int(frag_coord_3.y)) % 2); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _expr117 = i_1; i_1 = (_expr117 + 1); } loop_init_2 = false; int _expr34 = i_1; if ((_expr34 < 8)) { } else { break; } { int _expr36 = i_1; int current_spiral = (_expr36 >> 3u); float angle = (((_e25 + (float(current_spiral) / float(num_spirals))) * 2.0) * PIX_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX); float2 m = float2(sin(angle), cos(angle)); float2x2 rotation_matrix = float2x2(float2(m.y, -(m.x)), float2(m.x, m.y)); int _expr58 = i_1; switch((_expr58 & 7)) { case 0: { spiral_offset = SPIRAL_OFFSET_0_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX; break; } case 1: { spiral_offset = SPIRAL_OFFSET_2_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX; break; } case 2: { spiral_offset = SPIRAL_OFFSET_4_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX; break; } case 3: { spiral_offset = SPIRAL_OFFSET_6_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX; break; } case 4: { spiral_offset = SPIRAL_OFFSET_1_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX; break; } case 5: { spiral_offset = SPIRAL_OFFSET_3_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX; break; } case 6: { spiral_offset = SPIRAL_OFFSET_5_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX; break; } case 7: { spiral_offset = SPIRAL_OFFSET_7_X_naga_oil_mod_XMJSXM6K7OBRHEOR2OV2GS3DTX; break; } default: { break; } } float2 _expr79 = spiral_offset; spiral_offset = (_expr79 * (1.0 - ((0.5 * float((current_spiral + 1))) / float(num_spirals)))); float2 _expr81 = spiral_offset; float2 rotated_spiral_offset = (mul(_expr81, rotation_matrix) * float2(1.0, aspect)); float2 modified_offset_position = (offset_position_1 + ((rotated_spiral_offset * blur_intensity) * (1.0 - (float(pixel_checkboard) * 0.1)))); float4 _expr98 = view_transmission_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.SampleLevel(view_transmission_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, modified_offset_position, 0.0); sample_ = _expr98; float4 _expr100 = sample_; float3 normalized_rgb = normalize(_expr100.xyz); float4 _expr103 = sample_; float _expr113 = sample_.w; float4 _expr115 = result; result = (_expr115 + float4(min(_expr103.xyz, (normalized_rgb / (saturate((blur_intensity / 2.0))).xxx)), _expr113)); } } float4 _expr121 = result; result = (_expr121 / (float(8)).xxxx); float4 _expr124 = result; ColorGradingX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX _expr127 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.color_grading; const float4 _e128 = approximate_inverse_tone_mappingX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr124, _expr127); result = _e128; float4 _expr129 = result; return _expr129; } float3 specular_transmissive_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2ORZGC3TTNVUXG43JN5XAX(float4 world_position_5, float3 frag_coord_4, float view_z_6, float3 N_4, float3 V_3, float3 F0_4, float ior, float thickness, float perceptual_roughness_5, float3 specular_transmissive_color, float3 transmitted_environment_light_specular) { float4 background_color_1 = (float4)0; float eta = (1.0 / ior); float3 I = -(V_3); float NdotI = dot(N_4, I); float k_1 = (1.0 - ((eta * eta) * (1.0 - (NdotI * NdotI)))); float3 T = ((eta * I) - (((eta * NdotI) + sqrt(k_1)) * N_4)); float3 exit_position = (world_position_5.xyz + (T * thickness)); float4x4 _expr27 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.view_proj; float4 clip_exit_position = mul(float4(exit_position, 1.0), _expr27); float2 offset_position_5 = (((clip_exit_position.xy / (clip_exit_position.w).xx) * float2(0.5, -0.5)) + (0.5).xx); if ((perceptual_roughness_5 == 0.0)) { const float4 _e46 = fetch_transmissive_background_non_roughX_naga_oil_mod_XMJSXM6K7OBRHEOR2ORZGC3TTNVUXG43JN5XAX(offset_position_5, frag_coord_4); background_color_1 = _e46; } else { const float4 _e49 = fetch_transmissive_backgroundX_naga_oil_mod_XMJSXM6K7OBRHEOR2ORZGC3TTNVUXG43JN5XAX(offset_position_5, frag_coord_4, view_z_6, perceptual_roughness_5); background_color_1 = _e49; } float4 _expr50 = background_color_1; float _expr54 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.exposure; float _expr58 = background_color_1.w; background_color_1 = float4((_expr50.xyz / (_expr54).xxx), _expr58); float MinusNdotT = dot(-(N_4), T); const float3 _e65 = fresnelX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(F0_4, MinusNdotT); float3 F = ((1.0).xxx - _e65); float4 _expr70 = background_color_1; float _expr73 = background_color_1.w; return ((F * specular_transmissive_color) * lerp(transmitted_environment_light_specular, _expr70.xyz, _expr73)); } float4 scattering_adjusted_fog_colorX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX fog_params, float3 scattering) { if ((fog_params.directional_light_color.w > 0.0)) { return float4((fog_params.base_color.xyz + ((scattering * fog_params.directional_light_color.xyz) * fog_params.directional_light_color.w)), fog_params.base_color.w); } else { return fog_params.base_color; } } float4 linear_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX fog_params_1, float4 input_color, float distance_, float3 scattering_1) { float4 fog_color = (float4)0; const float4 _e2 = scattering_adjusted_fog_colorX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(fog_params_1, scattering_1); fog_color = _e2; float start = fog_params_1.be.x; float end = fog_params_1.be.y; float _expr18 = fog_color.w; fog_color.w = (_expr18 * (1.0 - clamp(((end - distance_) / (end - start)), 0.0, 1.0))); float4 _expr22 = fog_color; float _expr25 = fog_color.w; return float4(lerp(input_color.xyz, _expr22.xyz, _expr25), input_color.w); } float4 exponential_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX fog_params_2, float4 input_color_1, float distance_1, float3 scattering_2) { float4 fog_color_1 = (float4)0; const float4 _e2 = scattering_adjusted_fog_colorX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(fog_params_2, scattering_2); fog_color_1 = _e2; float density = fog_params_2.be.x; float _expr14 = fog_color_1.w; fog_color_1.w = (_expr14 * (1.0 - (1.0 / exp((distance_1 * density))))); float4 _expr18 = fog_color_1; float _expr21 = fog_color_1.w; return float4(lerp(input_color_1.xyz, _expr18.xyz, _expr21), input_color_1.w); } float4 exponential_squared_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX fog_params_3, float4 input_color_2, float distance_2, float3 scattering_3) { float4 fog_color_2 = (float4)0; const float4 _e2 = scattering_adjusted_fog_colorX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(fog_params_3, scattering_3); fog_color_2 = _e2; float distance_times_density = (distance_2 * fog_params_3.be.x); float _expr15 = fog_color_2.w; fog_color_2.w = (_expr15 * (1.0 - (1.0 / exp((distance_times_density * distance_times_density))))); float4 _expr19 = fog_color_2; float _expr22 = fog_color_2.w; return float4(lerp(input_color_2.xyz, _expr19.xyz, _expr22), input_color_2.w); } float4 atmospheric_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX fog_params_4, float4 input_color_3, float distance_3, float3 scattering_4) { float4 fog_color_3 = (float4)0; const float4 _e2 = scattering_adjusted_fog_colorX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(fog_params_4, scattering_4); fog_color_3 = _e2; float3 extinction_factor = ((1.0).xxx - ((1.0).xxx / exp((distance_3 * fog_params_4.be)))); float3 inscattering_factor = ((1.0).xxx - ((1.0).xxx / exp((distance_3 * fog_params_4.bi)))); float _expr27 = fog_color_3.w; float4 _expr32 = fog_color_3; float _expr36 = fog_color_3.w; return float4(((input_color_3.xyz * ((1.0).xxx - (extinction_factor * _expr27))) + ((_expr32.xyz * inscattering_factor) * _expr36)), input_color_3.w); } float3 prepare_world_normalX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(float3 world_normal_1, bool double_sided, bool is_front_1) { float3 output = (float3)0; output = world_normal_1; float3 _expr11 = output; output = (((float((!(double_sided) || is_front_1)) * 2.0) - 1.0) * _expr11); float3 _expr13 = output; return _expr13; } float3 apply_normal_mappingX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(uint standard_material_flags, float3 world_normal_2, bool double_sided_1, bool is_front_2, float2 uv_1, float mip_bias) { float3 N_5 = (float3)0; N_5 = world_normal_2; float3 _expr2 = N_5; return normalize(_expr2); } float3 calculate_viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(float4 world_position_6, bool is_orthographic_3) { float3 V_4 = (float3)0; if (is_orthographic_3) { float _expr5 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.view_proj[0].z; float _expr10 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.view_proj[1].z; float _expr15 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.view_proj[2].z; V_4 = normalize(float3(_expr5, _expr10, _expr15)); } else { float3 _expr22 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.world_position; V_4 = normalize((_expr22.xyz - world_position_6.xyz)); } float3 _expr27 = V_4; return _expr27; } StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX standard_material_newX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX() { StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX material = (StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX)0; material.base_color = float4(1.0, 1.0, 1.0, 1.0); material.emissive = float4(0.0, 0.0, 0.0, 1.0); material.perceptual_roughness = 0.5; material.metallic = 0.0; material.reflectance = 0.5; material.diffuse_transmission = 0.0; material.specular_transmission = 0.0; material.thickness = 0.0; material.ior = 1.5; material.attenuation_distance = 1.0; material.attenuation_color = float4(1.0, 1.0, 1.0, 1.0); material.flags = STANDARD_MATERIAL_FLAGS_ALPHA_MODE_OPAQUEX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX; material.alpha_cutoff = 0.5; material.parallax_depth_scale = 0.1; material.max_parallax_layer_count = 16.0; material.max_relief_mapping_search_steps = 5u; material.deferred_lighting_pass_id = 1u; StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _expr47 = material; const StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX standardmaterialx_naga_oil_mod_xmjsxm6k7obrheor2obrhex3upfygk4yx = _expr47; return standardmaterialx_naga_oil_mod_xmjsxm6k7obrheor2obrhex3upfygk4yx; } PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbr_input_newX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX() { PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbr_input_1 = (PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX)0; const StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _e2 = standard_material_newX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX(); pbr_input_1.material = _e2; pbr_input_1.diffuse_occlusion = (1.0).xxx; pbr_input_1.specular_occlusion = 1.0; pbr_input_1.frag_coord = float4(0.0, 0.0, 0.0, 1.0); pbr_input_1.world_position = float4(0.0, 0.0, 0.0, 1.0); pbr_input_1.world_normal = float3(0.0, 0.0, 1.0); pbr_input_1.is_orthographic = false; pbr_input_1.N = float3(0.0, 0.0, 1.0); pbr_input_1.V = float3(1.0, 0.0, 0.0); pbr_input_1.lightmap_light = (0.0).xxx; pbr_input_1.flags = 0u; PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _expr42 = pbr_input_1; const PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbrinputx_naga_oil_mod_xmjsxm6k7obrheor2obrhex3upfygk4yx = _expr42; return pbrinputx_naga_oil_mod_xmjsxm6k7obrheor2obrhex3upfygk4yx; } PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbr_input_from_vertex_outputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOJQWO3LFNZ2AX(VertexOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX in_3, bool is_front_3, bool double_sided_2) { PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbr_input_2 = (PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX)0; const PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _e0 = pbr_input_newX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX(); pbr_input_2 = _e0; uint _expr8 = asuint(meshX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7MJUW4ZDJNZTXGX.Load(148+in_3.instance_index*160)); pbr_input_2.flags = _expr8; float _expr14 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.projection[3].w; pbr_input_2.is_orthographic = (_expr14 == 1.0); bool _expr20 = pbr_input_2.is_orthographic; const float3 _e21 = calculate_viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(in_3.world_position, _expr20); pbr_input_2.V = _e21; pbr_input_2.frag_coord = in_3.position; pbr_input_2.world_position = in_3.world_position; const float3 _e30 = prepare_world_normalX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(in_3.world_normal, double_sided_2, is_front_3); pbr_input_2.world_normal = _e30; float3 _expr33 = pbr_input_2.world_normal; pbr_input_2.N = normalize(_expr33); PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _expr35 = pbr_input_2; const PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbrinputx_naga_oil_mod_xmjsxm6k7obrheor2obrhex3upfygk4yx_1 = _expr35; return pbrinputx_naga_oil_mod_xmjsxm6k7obrheor2obrhex3upfygk4yx_1; } PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbr_input_from_standard_materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOJQWO3LFNZ2AX(VertexOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX in_4, bool is_front_4) { PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbr_input_3 = (PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX)0; float2 uv_2 = (float2)0; float4 emissive = (float4)0; float metallic = (float)0; float perceptual_roughness_6 = (float)0; float specular_transmission = (float)0; float thickness_1 = (float)0; float diffuse_transmission = (float)0; float3 diffuse_occlusion = (1.0).xxx; float specular_occlusion = 1.0; uint _expr4 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; bool double_sided_3 = ((_expr4 & STANDARD_MATERIAL_FLAGS_DOUBLE_SIDED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) != 0u); const PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _e11 = pbr_input_from_vertex_outputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOJQWO3LFNZ2AX(in_4, is_front_4, double_sided_3); pbr_input_3 = _e11; uint _expr17 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; pbr_input_3.material.flags = _expr17; float4 _expr22 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.base_color; float4 _expr23 = pbr_input_3.material.base_color; pbr_input_3.material.base_color = (_expr23 * _expr22); uint _expr29 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.deferred_lighting_pass_id; pbr_input_3.material.deferred_lighting_pass_id = _expr29; float3 _expr31 = pbr_input_3.N; float3 _expr33 = pbr_input_3.V; float NdotV_5 = max(dot(_expr31, _expr33), 0.0001); uv_2 = in_4.uv; uint _expr41 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; if (((_expr41 & STANDARD_MATERIAL_FLAGS_BASE_COLOR_TEXTURE_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) != 0u)) { float2 _expr48 = uv_2; float _expr53 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.mip_bias; float4 _expr54 = base_color_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.SampleBias(base_color_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX, _expr48, _expr53); float4 _expr55 = pbr_input_3.material.base_color; pbr_input_3.material.base_color = (_expr55 * _expr54); } uint _expr61 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; pbr_input_3.material.flags = _expr61; uint _expr64 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; if (((_expr64 & STANDARD_MATERIAL_FLAGS_UNLIT_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) == 0u)) { float _expr73 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.reflectance; pbr_input_3.material.reflectance = _expr73; float _expr78 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.ior; pbr_input_3.material.ior = _expr78; float4 _expr83 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.attenuation_color; pbr_input_3.material.attenuation_color = _expr83; float _expr88 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.attenuation_distance; pbr_input_3.material.attenuation_distance = _expr88; float _expr93 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.alpha_cutoff; pbr_input_3.material.alpha_cutoff = _expr93; float4 _expr96 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.emissive; emissive = _expr96; uint _expr100 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; if (((_expr100 & STANDARD_MATERIAL_FLAGS_EMISSIVE_TEXTURE_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) != 0u)) { float4 _expr105 = emissive; float2 _expr107 = uv_2; float _expr112 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.mip_bias; float4 _expr113 = emissive_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.SampleBias(emissive_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX, _expr107, _expr112); emissive = float4((_expr105.xyz * _expr113.xyz), 1.0); } float4 _expr120 = emissive; pbr_input_3.material.emissive = _expr120; float _expr123 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.metallic; metallic = _expr123; float _expr127 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.perceptual_roughness; perceptual_roughness_6 = _expr127; float _expr129 = perceptual_roughness_6; const float _e130 = perceptualRoughnessToRoughnessX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(_expr129); uint _expr133 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; if (((_expr133 & STANDARD_MATERIAL_FLAGS_METALLIC_ROUGHNESS_TEXTURE_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) != 0u)) { float2 _expr138 = uv_2; float _expr143 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.mip_bias; float4 metallic_roughness = metallic_roughness_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.SampleBias(metallic_roughness_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX, _expr138, _expr143); float _expr146 = metallic; metallic = (_expr146 * metallic_roughness.z); float _expr149 = perceptual_roughness_6; perceptual_roughness_6 = (_expr149 * metallic_roughness.y); } float _expr153 = metallic; pbr_input_3.material.metallic = _expr153; float _expr156 = perceptual_roughness_6; pbr_input_3.material.perceptual_roughness = _expr156; float _expr159 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.specular_transmission; specular_transmission = _expr159; float _expr163 = specular_transmission; pbr_input_3.material.specular_transmission = _expr163; float _expr166 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.thickness; thickness_1 = _expr166; float3x4 _expr172 = float3x4(asfloat(meshX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7MJUW4ZDJNZTXGX.Load4(0+in_4.instance_index*160+0)), asfloat(meshX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7MJUW4ZDJNZTXGX.Load4(0+in_4.instance_index*160+16)), asfloat(meshX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7MJUW4ZDJNZTXGX.Load4(0+in_4.instance_index*160+32))); float3 _expr175 = pbr_input_3.N; float _expr181 = thickness_1; thickness_1 = (_expr181 * length(mul(float4(_expr175, 0.0), transpose(_expr172)).xyz)); float _expr185 = thickness_1; pbr_input_3.material.thickness = _expr185; float _expr188 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.diffuse_transmission; diffuse_transmission = _expr188; float _expr192 = diffuse_transmission; pbr_input_3.material.diffuse_transmission = _expr192; uint _expr195 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; if (((_expr195 & STANDARD_MATERIAL_FLAGS_OCCLUSION_TEXTURE_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) != 0u)) { float2 _expr200 = uv_2; float _expr205 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.mip_bias; float4 _expr206 = occlusion_textureX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.SampleBias(occlusion_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX, _expr200, _expr205); diffuse_occlusion = (_expr206.x).xxx; } float3 _expr211 = diffuse_occlusion; pbr_input_3.diffuse_occlusion = _expr211; float _expr214 = specular_occlusion; pbr_input_3.specular_occlusion = _expr214; uint _expr218 = materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3CNFXGI2LOM5ZQX.flags; float3 _expr220 = pbr_input_3.world_normal; float2 _expr221 = uv_2; float _expr224 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.mip_bias; const float3 _e225 = apply_normal_mappingX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(_expr218, _expr220, double_sided_3, is_front_4, _expr221, _expr224); pbr_input_3.N = _e225; } PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _expr226 = pbr_input_3; const PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbrinputx_naga_oil_mod_xmjsxm6k7obrheor2obrhex3upfygk4yx_2 = _expr226; return pbrinputx_naga_oil_mod_xmjsxm6k7obrheor2obrhex3upfygk4yx_2; } float4 alpha_discardX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX material_1, float4 output_color_1) { float4 color_3 = (float4)0; color_3 = output_color_1; uint alpha_mode = (material_1.flags & STANDARD_MATERIAL_FLAGS_ALPHA_MODE_RESERVED_BITSX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX); if ((alpha_mode == STANDARD_MATERIAL_FLAGS_ALPHA_MODE_OPAQUEX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX)) { color_3.w = 1.0; } float4 _expr10 = color_3; return _expr10; } float4 apply_pbr_lightingX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX in_5) { float4 output_color_2 = (float4)0; float3 direct_light = (0.0).xxx; float3 transmitted_light = (0.0).xxx; uint i_2 = (uint)0; float shadow_1 = (float)0; float transmitted_shadow = (float)0; uint i_3 = (uint)0; float shadow_2 = (float)0; float transmitted_shadow_1 = (float)0; uint i_4 = 0u; float shadow_3 = (float)0; float3 light_contrib = (float3)0; float transmitted_shadow_2 = (float)0; float3 indirect_light = (float3)0; float3 specular_transmitted_environment_light = (0.0).xxx; FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX attenuation_fog = (FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX)0; output_color_2 = in_5.material.base_color; float4 emissive_1 = in_5.material.emissive; float metallic_1 = in_5.material.metallic; float perceptual_roughness_7 = in_5.material.perceptual_roughness; const float _e13 = perceptualRoughnessToRoughnessX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(perceptual_roughness_7); float ior_1 = in_5.material.ior; float thickness_2 = in_5.material.thickness; float diffuse_transmission_1 = in_5.material.diffuse_transmission; float specular_transmission_1 = in_5.material.specular_transmission; float3 specular_transmissive_color_1 = (specular_transmission_1 * in_5.material.base_color.xyz); float3 diffuse_occlusion_1 = in_5.diffuse_occlusion; float specular_occlusion_3 = in_5.specular_occlusion; float NdotV_6 = max(dot(in_5.N, in_5.V), 0.0001); float reflectance = in_5.material.reflectance; float4 _expr41 = output_color_2; float3 F0_5 = (((((0.16 * reflectance) * reflectance) * (1.0 - metallic_1))).xxx + (_expr41.xyz * metallic_1)); float4 _expr46 = output_color_2; float3 diffuse_color_2 = (((_expr46.xyz * (1.0 - metallic_1)) * (1.0 - specular_transmission_1)) * (1.0 - diffuse_transmission_1)); float4 _expr57 = output_color_2; float3 diffuse_transmissive_color = (((_expr57.xyz * (1.0 - metallic_1)) * (1.0 - specular_transmission_1)) * diffuse_transmission_1); float4 diffuse_transmissive_lobe_world_position = (in_5.world_position - (float4(in_5.world_normal, 0.0) * thickness_2)); float3 R_5 = reflect(-(in_5.V), in_5.N); const float2 _e76 = F_ABX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(perceptual_roughness_7, NdotV_6); float _expr81 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.inverse_view[0].z; float _expr86 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.inverse_view[1].z; float _expr91 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.inverse_view[2].z; float _expr96 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.inverse_view[3].z; float view_z_7 = dot(float4(_expr81, _expr86, _expr91, _expr96), in_5.world_position); const uint _e103 = fragment_cluster_indexX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(in_5.frag_coord.xy, view_z_7, in_5.is_orthographic); const uint3 _e104 = unpack_offset_and_countsX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(_e103); i_2 = _e104.x; bool loop_init_3 = true; while(true) { if (!loop_init_3) { uint _expr185 = i_2; i_2 = (_expr185 + 1u); } loop_init_3 = false; uint _expr107 = i_2; if ((_expr107 < (_e104.x + _e104.y))) { } else { break; } { uint _expr112 = i_2; const uint _e113 = get_light_idX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(_expr112); shadow_1 = 1.0; uint _expr125 = asuint(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(48+_e113*64+0)); if ((((in_5.flags & MESH_FLAGS_SHADOW_RECEIVER_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OR4XAZLTX) != 0u) && ((_expr125 & POINT_LIGHT_FLAGS_SHADOWS_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) != 0u))) { const float _e133 = fetch_point_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(_e113, in_5.world_position, in_5.world_normal); shadow_1 = _e133; } const float3 _e138 = point_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(in_5.world_position.xyz, _e113, _e13, NdotV_6, in_5.N, in_5.V, R_5, F0_5, _e76, diffuse_color_2); float _expr140 = shadow_1; float3 _expr142 = direct_light; direct_light = (_expr142 + (_e138 * _expr140)); if ((diffuse_transmission_1 > 0.0)) { transmitted_shadow = 1.0; uint _expr157 = asuint(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(48+_e113*64+0)); if ((((in_5.flags & 3u) == 3u) && ((_expr157 & POINT_LIGHT_FLAGS_SHADOWS_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) != 0u))) { const float _e165 = fetch_point_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(_e113, diffuse_transmissive_lobe_world_position, -(in_5.world_normal)); transmitted_shadow = _e165; } const float3 _e179 = point_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(diffuse_transmissive_lobe_world_position.xyz, _e113, 1.0, 1.0, -(in_5.N), -(in_5.V), (0.0).xxx, (0.0).xxx, (0.1).xx, diffuse_transmissive_color); float _expr181 = transmitted_shadow; float3 _expr183 = transmitted_light; transmitted_light = (_expr183 + (_e179 * _expr181)); } } } i_3 = (_e104.x + _e104.y); bool loop_init_4 = true; while(true) { if (!loop_init_4) { uint _expr270 = i_3; i_3 = (_expr270 + 1u); } loop_init_4 = false; uint _expr192 = i_3; if ((_expr192 < ((_e104.x + _e104.y) + _e104.z))) { } else { break; } { uint _expr199 = i_3; const uint _e200 = get_light_idX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(_expr199); shadow_2 = 1.0; uint _expr212 = asuint(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(48+_e200*64+0)); if ((((in_5.flags & MESH_FLAGS_SHADOW_RECEIVER_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OR4XAZLTX) != 0u) && ((_expr212 & POINT_LIGHT_FLAGS_SHADOWS_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) != 0u))) { const float _e220 = fetch_spot_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(_e200, in_5.world_position, in_5.world_normal); shadow_2 = _e220; } const float3 _e225 = spot_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(in_5.world_position.xyz, _e200, _e13, NdotV_6, in_5.N, in_5.V, R_5, F0_5, _e76, diffuse_color_2); float _expr226 = shadow_2; float3 _expr228 = direct_light; direct_light = (_expr228 + (_e225 * _expr226)); if ((diffuse_transmission_1 > 0.0)) { transmitted_shadow_1 = 1.0; uint _expr243 = asuint(point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.Load(48+_e200*64+0)); if ((((in_5.flags & 3u) == 3u) && ((_expr243 & POINT_LIGHT_FLAGS_SHADOWS_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) != 0u))) { const float _e251 = fetch_spot_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(_e200, diffuse_transmissive_lobe_world_position, -(in_5.world_normal)); transmitted_shadow_1 = _e251; } const float3 _e265 = spot_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(diffuse_transmissive_lobe_world_position.xyz, _e200, 1.0, 1.0, -(in_5.N), -(in_5.V), (0.0).xxx, (0.0).xxx, (0.1).xx, diffuse_transmissive_color); float _expr266 = transmitted_shadow_1; float3 _expr268 = transmitted_light; transmitted_light = (_expr268 + (_e265 * _expr266)); } } } uint n_directional_lights = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.n_directional_lights; bool loop_init_5 = true; while(true) { if (!loop_init_5) { uint _expr365 = i_4; i_4 = (_expr365 + 1u); } loop_init_5 = false; uint _expr277 = i_4; if ((_expr277 < n_directional_lights)) { } else { break; } { uint _expr281 = i_4; uint _expr284 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[_expr281].render_layers; uint _expr287 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.render_layers; if (((_expr284 & _expr287) == 0u)) { continue; } shadow_3 = 1.0; uint _expr300 = i_4; uint _expr303 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[_expr300].flags; if ((((in_5.flags & MESH_FLAGS_SHADOW_RECEIVER_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OR4XAZLTX) != 0u) && ((_expr303 & DIRECTIONAL_LIGHT_FLAGS_SHADOWS_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) != 0u))) { uint _expr309 = i_4; const float _e312 = fetch_directional_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(_expr309, in_5.world_position, in_5.world_normal, view_z_7); shadow_3 = _e312; } uint _expr313 = i_4; const float3 _e316 = directional_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(_expr313, _e13, NdotV_6, in_5.N, in_5.V, R_5, F0_5, _e76, diffuse_color_2); light_contrib = _e316; float3 _expr318 = light_contrib; float _expr319 = shadow_3; float3 _expr321 = direct_light; direct_light = (_expr321 + (_expr318 * _expr319)); if ((diffuse_transmission_1 > 0.0)) { transmitted_shadow_2 = 1.0; uint _expr334 = i_4; uint _expr337 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[_expr334].flags; if ((((in_5.flags & 3u) == 3u) && ((_expr337 & DIRECTIONAL_LIGHT_FLAGS_SHADOWS_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) != 0u))) { uint _expr343 = i_4; const float _e346 = fetch_directional_shadowX_naga_oil_mod_XMJSXM6K7OBRHEOR2ONUGCZDPO5ZQX(_expr343, diffuse_transmissive_lobe_world_position, -(in_5.world_normal), view_z_7); transmitted_shadow_2 = _e346; } uint _expr347 = i_4; const float3 _e360 = directional_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NRUWO2DUNFXGOX(_expr347, 1.0, 1.0, -(in_5.N), -(in_5.V), (0.0).xxx, (0.0).xxx, (0.1).xx, diffuse_transmissive_color); float _expr361 = transmitted_shadow_2; float3 _expr363 = transmitted_light; transmitted_light = (_expr363 + (_e360 * _expr361)); } } } const float3 _e371 = ambient_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MFWWE2LFNZ2AX(in_5.world_position, in_5.N, in_5.V, NdotV_6, diffuse_color_2, F0_5, perceptual_roughness_7, diffuse_occlusion_1); indirect_light = _e371; if ((diffuse_transmission_1 > 0.0)) { const float3 _e385 = ambient_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MFWWE2LFNZ2AX(diffuse_transmissive_lobe_world_position, -(in_5.N), -(in_5.V), 1.0, diffuse_transmissive_color, (0.0).xxx, 1.0, (1.0).xxx); float3 _expr386 = transmitted_light; transmitted_light = (_expr386 + _e385); } const EnvironmentMapLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX _e391 = environment_map_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX(perceptual_roughness_7, _e13, diffuse_color_2, NdotV_6, _e76, in_5.N, R_5, F0_5, in_5.world_position.xyz); float3 _expr397 = indirect_light; indirect_light = (_expr397 + ((_e391.diffuse * diffuse_occlusion_1) + (_e391.specular * specular_occlusion_3))); if (((diffuse_transmission_1 > 0.0) || (specular_transmission_1 > 0.0))) { float3 T_1 = -(normalize((in_5.V + (refract(in_5.V, -(in_5.N), (1.0 / ior_1)) * thickness_2)))); const EnvironmentMapLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX _e424 = environment_map_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2MVXHM2LSN5XG2ZLOORPW2YLQX(perceptual_roughness_7, _e13, (1.0).xxx, 1.0, _e76, -(in_5.N), T_1, (1.0).xxx, in_5.world_position.xyz); float3 _expr427 = transmitted_light; transmitted_light = (_expr427 + (_e424.diffuse * diffuse_transmissive_color)); specular_transmitted_environment_light = (_e424.specular * specular_transmissive_color_1); } float _expr434 = output_color_2.w; float3 emissive_light = (emissive_1.xyz * _expr434); if ((specular_transmission_1 > 0.0)) { float3 _expr443 = specular_transmitted_environment_light; const float3 _e444 = specular_transmissive_lightX_naga_oil_mod_XMJSXM6K7OBRHEOR2ORZGC3TTNVUXG43JN5XAX(in_5.world_position, in_5.frag_coord.xyz, view_z_7, in_5.N, in_5.V, F0_5, ior_1, thickness_2, perceptual_roughness_7, specular_transmissive_color_1, _expr443); float3 _expr446 = transmitted_light; transmitted_light = (_expr446 + _e444.xyz); } if (((in_5.material.flags & STANDARD_MATERIAL_FLAGS_ATTENUATION_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) != 0u)) { attenuation_fog.base_color.w = 1.0; attenuation_fog.be = (pow(((1.0).xxx - in_5.material.attenuation_color.xyz), (2.7182817).xxx) / (in_5.material.attenuation_distance).xxx); FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX _expr472 = attenuation_fog; float3 _expr473 = transmitted_light; const float4 _e478 = atmospheric_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(_expr472, float4(_expr473, 1.0), thickness_2, (0.0).xxx); transmitted_light = _e478.xyz; } float _expr482 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.exposure; float3 _expr483 = transmitted_light; float3 _expr484 = direct_light; float3 _expr486 = indirect_light; float _expr491 = output_color_2.w; output_color_2 = float4((_expr482 * (((_expr483 + _expr484) + _expr486) + emissive_light)), _expr491); float4 _expr493 = output_color_2; const float4 _e495 = cluster_debug_visualizationX_naga_oil_mod_XMJSXM6K7OBRHEOR2MNWHK43UMVZGKZC7MZXXE53BOJSAX(_expr493, view_z_7, in_5.is_orthographic, _e104, _e103); output_color_2 = _e495; float4 _expr496 = output_color_2; return _expr496; } float4 apply_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX fog_params_5, float4 input_color_4, float3 fragment_world_position, float3 view_world_position) { float3 scattering_5 = (0.0).xxx; uint i_5 = 0u; float3 view_to_world = (fragment_world_position.xyz - view_world_position.xyz); float distance_4 = length(view_to_world); if ((fog_params_5.directional_light_color.w > 0.0)) { float3 view_to_world_normalized = (view_to_world / (distance_4).xxx); uint n_directional_lights_1 = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.n_directional_lights; bool loop_init_6 = true; while(true) { if (!loop_init_6) { uint _expr43 = i_5; i_5 = (_expr43 + 1u); } loop_init_6 = false; uint _expr20 = i_5; if ((_expr20 < n_directional_lights_1)) { } else { break; } { uint _expr24 = i_5; DirectionalLightX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX light = lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.directional_lights[_expr24]; float _expr39 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.exposure; float3 _expr41 = scattering_5; scattering_5 = (_expr41 + ((pow(max(dot(view_to_world_normalized, light.direction_to_light), 0.0), fog_params_5.directional_light_exponent) * light.color.xyz) * _expr39)); } } } if ((fog_params_5.mode == FOG_MODE_LINEARX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX)) { float3 _expr49 = scattering_5; const float4 _e51 = linear_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(fog_params_5, input_color_4, distance_4, _expr49); return _e51; } else { if ((fog_params_5.mode == FOG_MODE_EXPONENTIALX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX)) { float3 _expr55 = scattering_5; const float4 _e56 = exponential_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(fog_params_5, input_color_4, distance_4, _expr55); return _e56; } else { if ((fog_params_5.mode == FOG_MODE_EXPONENTIAL_SQUAREDX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX)) { float3 _expr60 = scattering_5; const float4 _e61 = exponential_squared_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(fog_params_5, input_color_4, distance_4, _expr60); return _e61; } else { if ((fog_params_5.mode == FOG_MODE_ATMOSPHERICX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX)) { float3 _expr65 = scattering_5; const float4 _e66 = atmospheric_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXWOX(fog_params_5, input_color_4, distance_4, _expr65); return _e66; } else { return input_color_4; } } } } } float4 main_pass_post_lighting_processingX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbr_input_4, float4 input_color_5) { float4 output_color_3 = (float4)0; float3 output_rgb = (float3)0; output_color_3 = input_color_5; uint _expr4 = fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.mode; if (((_expr4 != FOG_MODE_OFFX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX) && ((pbr_input_4.material.flags & STANDARD_MATERIAL_FLAGS_FOG_ENABLED_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) != 0u))) { FogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527OR4XAZLTX _expr16 = fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX; float4 _expr17 = output_color_3; float3 _expr22 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.world_position; const float4 _e24 = apply_fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(_expr16, _expr17, pbr_input_4.world_position.xyz, _expr22.xyz); output_color_3 = _e24; } float4 _expr25 = output_color_3; ColorGradingX_naga_oil_mod_XMJSXM6K7OJSW4ZDFOI5DU5TJMV3QX _expr28 = viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX.color_grading; const float4 _e29 = tone_mappingX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr25, _expr28); output_color_3 = _e29; float4 _expr30 = output_color_3; output_rgb = _expr30.xyz; float3 _expr33 = output_rgb; const float3 _e35 = powsafeX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr33, 0.45454544); output_rgb = _e35; const float3 _e38 = screen_space_ditherX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(pbr_input_4.frag_coord.xy); float3 _expr39 = output_rgb; output_rgb = (_expr39 + _e38); float3 _expr41 = output_rgb; const float3 _e43 = powsafeX_naga_oil_mod_XMJSXM6K7MNXXEZK7OBUXAZLMNFXGKOR2ORXW4ZLNMFYHA2LOM4X(_expr41, 2.2); output_rgb = _e43; float3 _expr44 = output_rgb; float _expr46 = output_color_3.w; output_color_3 = float4(_expr44, _expr46); float4 _expr48 = output_color_3; return _expr48; } FragmentOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX fragment(FragmentInput_fragment fragmentinput_fragment) { VertexOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX in_ = { fragmentinput_fragment.position, fragmentinput_fragment.world_position_7, fragmentinput_fragment.world_normal_3, fragmentinput_fragment.uv_3, fragmentinput_fragment.instance_index }; bool is_front = fragmentinput_fragment.is_front_5; PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX pbr_input = (PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX)0; FragmentOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX out_ = (FragmentOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX)0; const PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _e2 = pbr_input_from_standard_materialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOJQWO3LFNZ2AX(in_, is_front); pbr_input = _e2; StandardMaterialX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _expr7 = pbr_input.material; float4 _expr10 = pbr_input.material.base_color; const float4 _e11 = alpha_discardX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(_expr7, _expr10); pbr_input.material.base_color = _e11; uint _expr14 = pbr_input.material.flags; if (((_expr14 & STANDARD_MATERIAL_FLAGS_UNLIT_BITX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX) == 0u)) { PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _expr21 = pbr_input; const float4 _e22 = apply_pbr_lightingX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(_expr21); out_.color = _e22; } else { float4 _expr26 = pbr_input.material.base_color; out_.color = _expr26; } PbrInputX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3UPFYGK4YX _expr28 = pbr_input; float4 _expr30 = out_.color; const float4 _e31 = main_pass_post_lighting_processingX_naga_oil_mod_XMJSXM6K7OBRHEOR2OBRHEX3GOVXGG5DJN5XHGX(_expr28, _expr30); out_.color = _e31; FragmentOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX _expr32 = out_; const FragmentOutputX_naga_oil_mod_XMJSXM6K7OBRHEOR2MZXXE53BOJSF62LPX fragmentoutputx_naga_oil_mod_xmjsxm6k7obrheor2mzxxe53bojsf62lpx = _expr32; return fragmentoutputx_naga_oil_mod_xmjsxm6k7obrheor2mzxxe53bojsf62lpx; }
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree