#version 420 core #include #define LIGHTING_TYPE LIGHTING_TYPE_TRANSMISSION #define LIGHTING_REFLECTION_KIND LIGHTING_REFLECTION_KIND_SPECULAR #if (FLUID_MODE == FLUID_MODE_CHEAP) #define LIGHTING_TRANSPORT_MODE LIGHTING_TRANSPORT_MODE_IMPORTANCE #elif (FLUID_MODE == FLUID_MODE_SHINY) #define LIGHTING_TRANSPORT_MODE LIGHTING_TRANSPORT_MODE_RADIANCE #endif #define LIGHTING_DISTRIBUTION_SCHEME LIGHTING_DISTRIBUTION_SCHEME_MICROFACET #define LIGHTING_DISTRIBUTION LIGHTING_DISTRIBUTION_BECKMANN #include layout(location = 0) in vec3 v_pos; layout(location = 0) out vec3 f_pos; void main() { f_pos = v_pos; // TODO: Make this position-independent to avoid rounding error jittering // NOTE: we may or may not want to use an infinite projection here // // Essentially: using any finite projection is likely wrong here if we want // to project out to infinity, but since we want to perturb the skybox as we // move and we have stars now, the "right" answer is heavily dependent on // how we compute cloud position and stuff. // // Infinite projections of cubemaps are nice because they can be oriented // but still extend infinitely far. gl_Position = all_mat * vec4(v_pos + cam_pos.xyz, 1); // gl_Position = vec4(gl_Position.xy, sign(gl_Position.z) * gl_Position.w, gl_Position.w); gl_Position.z = 0; // gl_Position.z = gl_Position.w - 0.000001;//0.0; // gl_Position.z = 1.0; // gl_Position.z = -1.0; }