// Scene data stores all our 3D rendering globals for a frame such as our matrices // where this information is independent of the different RD implementations. // This enables us to use this UBO in our main scene render shaders but also in // effects that need access to this data. #define SCENE_DATA_FLAGS_USE_AMBIENT_LIGHT (1 << 0) #define SCENE_DATA_FLAGS_USE_AMBIENT_CUBEMAP (1 << 1) #define SCENE_DATA_FLAGS_USE_REFLECTION_CUBEMAP (1 << 2) #define SCENE_DATA_FLAGS_USE_ROUGHNESS_LIMITER (1 << 3) #define SCENE_DATA_FLAGS_USE_FOG (1 << 4) #define SCENE_DATA_FLAGS_USE_UV2_MATERIAL (1 << 5) #define SCENE_DATA_FLAGS_USE_PANCAKE_SHADOWS (1 << 6) #define SCENE_DATA_FLAGS_IN_SHADOW_PASS (1 << 7) struct SceneData { highp mat4 projection_matrix; highp mat4 inv_projection_matrix; highp mat4 inv_view_matrix; highp mat4 view_matrix; // only used for multiview highp mat4 projection_matrix_view[MAX_VIEWS]; highp mat4 inv_projection_matrix_view[MAX_VIEWS]; highp vec4 eye_offset[MAX_VIEWS]; // Used for billboards to cast correct shadows. highp mat4 main_cam_inv_view_matrix; highp vec2 viewport_size; highp vec2 screen_pixel_size; // Use vec4s because std140 doesn't play nice with vec2s, z and w are wasted. highp vec4 directional_penumbra_shadow_kernel[32]; highp vec4 directional_soft_shadow_kernel[32]; highp vec4 penumbra_shadow_kernel[32]; highp vec4 soft_shadow_kernel[32]; highp vec2 shadow_atlas_pixel_size; highp vec2 directional_shadow_pixel_size; uint directional_light_count; mediump float dual_paraboloid_side; highp float z_far; highp float z_near; mediump float roughness_limiter_amount; mediump float roughness_limiter_limit; mediump float opaque_prepass_threshold; highp uint flags; mediump mat3 radiance_inverse_xform; mediump vec4 ambient_light_color_energy; mediump float ambient_color_sky_mix; highp float fog_density; highp float fog_height; highp float fog_height_density; highp float fog_depth_curve; highp float fog_depth_begin; highp float fog_depth_end; mediump float fog_sun_scatter; mediump vec3 fog_light_color; mediump float fog_aerial_perspective; highp float time; highp float taa_frame_count; vec2 taa_jitter; float emissive_exposure_normalization; float IBL_exposure_normalization; uint camera_visible_layers; float pass_alpha_multiplier; };