veloren/assets/voxygen/shaders/rain-occlusion-directed-vert.glsl

66 lines
1.7 KiB
Plaintext
Raw Normal View History

2023-10-18 20:50:40 +00:00
#version 430 core
2022-03-15 18:04:21 +00:00
// #extension ARB_texture_storage : enable
#include <constants.glsl>
#define LIGHTING_TYPE LIGHTING_TYPE_REFLECTION
#define LIGHTING_REFLECTION_KIND LIGHTING_REFLECTION_KIND_GLOSSY
2022-10-23 19:03:21 +00:00
#if (FLUID_MODE == FLUID_MODE_LOW)
2022-03-15 18:04:21 +00:00
#define LIGHTING_TRANSPORT_MODE LIGHTING_TRANSPORT_MODE_IMPORTANCE
2022-09-23 14:04:47 +00:00
#elif (FLUID_MODE >= FLUID_MODE_MEDIUM)
2022-03-15 18:04:21 +00:00
#define LIGHTING_TRANSPORT_MODE LIGHTING_TRANSPORT_MODE_RADIANCE
#endif
#define LIGHTING_DISTRIBUTION_SCHEME LIGHTING_DISTRIBUTION_SCHEME_MICROFACET
#define LIGHTING_DISTRIBUTION LIGHTING_DISTRIBUTION_BECKMANN
#define HAS_SHADOW_MAPS
// Currently, we only need globals for focus_off.
#include <globals.glsl>
// For shadow locals.
// #include <shadows.glsl>
layout (std140, set = 0, binding = 14)
uniform u_rain_occlusion {
2022-06-04 01:25:17 +00:00
mat4 rain_occlusion_matrices;
mat4 rain_occlusion_texture_mat;
mat4 rain_dir_mat;
2022-05-30 21:02:22 +00:00
float integrated_rain_vel;
2022-06-11 20:57:07 +00:00
float rain_density;
vec2 occlusion_dummy; // Fix alignment.
2022-03-15 18:04:21 +00:00
};
/* Accurate packed shadow maps for many lights at once!
*
* Ideally, we would just write to a bitmask...
*
* */
layout(location = 0) in uint v_pos_norm;
// in uint v_col_light;
// in vec4 v_pos;
// layout(location = 1) in uint v_atlas_pos;
// Light projection matrices.
layout (std140, set = 1, binding = 0)
uniform u_locals {
2023-05-05 18:13:49 +00:00
mat4 model_mat;
2022-03-15 18:04:21 +00:00
ivec4 atlas_offs;
2023-02-22 08:52:40 +00:00
float load_time;
2022-03-15 18:04:21 +00:00
};
// out vec4 shadowMapCoord;
const float EXTRA_NEG_Z = 32768.0;
void main() {
vec3 f_chunk_pos = vec3(v_pos_norm & 0x3Fu, (v_pos_norm >> 6) & 0x3Fu, float((v_pos_norm >> 12) & 0xFFFFu) - EXTRA_NEG_Z);
2023-02-22 10:32:21 +00:00
vec3 f_pos = (model_mat * vec4(f_chunk_pos, 1.0)).xyz - focus_off.xyz;
2022-03-15 18:04:21 +00:00
2022-06-04 01:25:17 +00:00
gl_Position = rain_occlusion_matrices * vec4(f_pos, 1.0);
2022-03-15 18:04:21 +00:00
}