fix sky shader
This commit is contained in:
parent
28c821006a
commit
4ff18fec99
@ -43,7 +43,7 @@ float calc_shadow(
|
|||||||
// TODO: add array textures support
|
// TODO: add array textures support
|
||||||
float calc_shadow(vec4 modelPos, vec3 realnormal, float distance) {
|
float calc_shadow(vec4 modelPos, vec3 realnormal, float distance) {
|
||||||
#ifdef ENABLE_SHADOWS
|
#ifdef ENABLE_SHADOWS
|
||||||
float s = pow(abs(cos(u_dayTime * PI2)), 0.25) * u_shadowsOpacity;
|
float s = u_shadowsOpacity;
|
||||||
vec3 normalOffset = realnormal * (distance > 64.0 ? 0.2 : 0.04);
|
vec3 normalOffset = realnormal * (distance > 64.0 ? 0.2 : 0.04);
|
||||||
|
|
||||||
// as slow as mix(...)
|
// as slow as mix(...)
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
#include <constants>
|
#include <constants>
|
||||||
|
|
||||||
vec3 pick_sky_color(samplerCube cubemap) {
|
vec3 pick_sky_color(samplerCube cubemap) {
|
||||||
vec3 skyLightColor = texture(cubemap, vec3(0.8f, 0.01f, 0.4f)).rgb;
|
vec3 skyLightColor = texture(cubemap, vec3(0.4f, 0.05f, 0.4f)).rgb;
|
||||||
skyLightColor *= SKY_LIGHT_TINT;
|
skyLightColor *= SKY_LIGHT_TINT;
|
||||||
skyLightColor = min(vec3(1.0f), skyLightColor * SKY_LIGHT_MUL);
|
skyLightColor = min(vec3(1.0f), skyLightColor * SKY_LIGHT_MUL);
|
||||||
skyLightColor = max(MIN_SKY_LIGHT, skyLightColor);
|
skyLightColor = max(MIN_SKY_LIGHT, skyLightColor);
|
||||||
|
|||||||
@ -268,7 +268,11 @@ void main() {
|
|||||||
camera_vector, // the camera vector (ray direction of this pixel)
|
camera_vector, // the camera vector (ray direction of this pixel)
|
||||||
1e12f, // max dist, essentially the scene depth
|
1e12f, // max dist, essentially the scene depth
|
||||||
vec3(0.0f), // scene color, the color of the current pixel being rendered
|
vec3(0.0f), // scene color, the color of the current pixel being rendered
|
||||||
vec3(u_lightDir.x, pow(u_lightDir.y, 3.0), u_lightDir.z), // light direction
|
vec3(
|
||||||
|
u_lightDir.x,
|
||||||
|
u_lightDir.y,
|
||||||
|
u_lightDir.z
|
||||||
|
), // light direction
|
||||||
vec3(40.0*fog), // light intensity, 40 looks nice
|
vec3(40.0*fog), // light intensity, 40 looks nice
|
||||||
PLANET_POS, // position of the planet
|
PLANET_POS, // position of the planet
|
||||||
PLANET_RADIUS, // radius of the planet in meters
|
PLANET_RADIUS, // radius of the planet in meters
|
||||||
|
|||||||
@ -96,12 +96,16 @@ void Shadows::setup(Shader& shader, const Weather& weather) {
|
|||||||
if (shadows) {
|
if (shadows) {
|
||||||
const auto& worldInfo = level.getWorld()->getInfo();
|
const auto& worldInfo = level.getWorld()->getInfo();
|
||||||
float cloudsIntensity = glm::max(worldInfo.fog, weather.clouds());
|
float cloudsIntensity = glm::max(worldInfo.fog, weather.clouds());
|
||||||
|
float shadowsOpacity = 1.0f - cloudsIntensity;
|
||||||
|
shadowsOpacity *= glm::sqrt(glm::abs(
|
||||||
|
glm::mod((worldInfo.daytime + 0.5f) * 2.0f, 1.0f) * 2.0f - 1.0f
|
||||||
|
));
|
||||||
shader.uniform1i("u_screen", 0);
|
shader.uniform1i("u_screen", 0);
|
||||||
shader.uniformMatrix("u_shadowsMatrix[0]", shadowCamera.getProjView());
|
shader.uniformMatrix("u_shadowsMatrix[0]", shadowCamera.getProjView());
|
||||||
shader.uniformMatrix("u_shadowsMatrix[1]", wideShadowCamera.getProjView());
|
shader.uniformMatrix("u_shadowsMatrix[1]", wideShadowCamera.getProjView());
|
||||||
shader.uniform3f("u_sunDir", shadowCamera.front);
|
shader.uniform3f("u_sunDir", shadowCamera.front);
|
||||||
shader.uniform1i("u_shadowsRes", shadowMap->getResolution());
|
shader.uniform1i("u_shadowsRes", shadowMap->getResolution());
|
||||||
shader.uniform1f("u_shadowsOpacity", 1.0f - cloudsIntensity); // TODO: make it configurable
|
shader.uniform1f("u_shadowsOpacity", shadowsOpacity); // TODO: make it configurable
|
||||||
shader.uniform1f("u_shadowsSoftness", 1.0f + cloudsIntensity * 4); // TODO: make it configurable
|
shader.uniform1f("u_shadowsSoftness", 1.0f + cloudsIntensity * 4); // TODO: make it configurable
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0 + TARGET_SHADOWS0);
|
glActiveTexture(GL_TEXTURE0 + TARGET_SHADOWS0);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user