atmosphere: add altitude-thinning distance haze
This commit is contained in:
1 parent
7d75707e74
commit
69a00b479b
2 files changed
+42
-13
No files matched your search
Vendored
+33
-12
@@ -364,7 +364,7 @@ var FRAG_SRC = [
|
||||
'for (int i = 0; i < 32; i++) {',
|
||||
'vec3 p = ro + rd * t;',
|
||||
'float alt = max(0.0, length(p - C) - R);',
|
||||
'float dens = exp(-alt / Hs);',
|
||||
'float dens = exp(-alt / Hs) / Hs;',
|
||||
'float dtau = uAtmoDensity * dens * step;',
|
||||
'float transBefore = exp(-tau);',
|
||||
'float grayMix = clamp(tau / max(0.01, uAtmoGrayTau), 0.0, 1.0);',
|
||||
@@ -2427,19 +2427,32 @@ var ATMO_HAZE_RESIDUAL = (typeof ATMO.hazeResidual === 'number')
|
||||
? Math.max(0.02, Math.min(0.95, ATMO.hazeResidual)) : 0.30;
|
||||
var ATMO_DISTANCE_FOG = ATMO.distanceFog !== false;
|
||||
var ATMO_MODEL = ATMO.model || {};
|
||||
var ATMO_MODEL_ON = ATMO_MODEL.enabled === true;
|
||||
var ATMO_MODEL_HEIGHT_KM = (typeof ATMO_MODEL.heightKm === 'number')
|
||||
? Math.max(1.0, Math.min(80.0, ATMO_MODEL.heightKm)) : 35.0;
|
||||
var HAZE_CFG = ATMO.haze || {};
|
||||
var ATMO_MODEL_ON = (typeof HAZE_CFG.enabled === 'boolean')
|
||||
? HAZE_CFG.enabled
|
||||
: (ATMO_MODEL.enabled === true);
|
||||
var ATMO_MODEL_HEIGHT_KM = (typeof HAZE_CFG.heightKm === 'number')
|
||||
? Math.max(1.0, Math.min(120.0, HAZE_CFG.heightKm))
|
||||
: ((typeof ATMO_MODEL.heightKm === 'number')
|
||||
? Math.max(1.0, Math.min(80.0, ATMO_MODEL.heightKm)) : 60.0);
|
||||
var ATMO_MODEL_HEIGHT_UNITS = ATMO_MODEL_HEIGHT_KM / KM_PER_TILE;
|
||||
var ATMO_MODEL_SCALE_HEIGHT_KM = (typeof ATMO_MODEL.scaleHeightKm === 'number')
|
||||
? Math.max(1.0, Math.min(30.0, ATMO_MODEL.scaleHeightKm)) : 8.5;
|
||||
var ATMO_MODEL_SCALE_HEIGHT_KM = (typeof HAZE_CFG.scaleHeightKm === 'number')
|
||||
? Math.max(1.0, Math.min(30.0, HAZE_CFG.scaleHeightKm))
|
||||
: ((typeof ATMO_MODEL.scaleHeightKm === 'number')
|
||||
? Math.max(1.0, Math.min(30.0, ATMO_MODEL.scaleHeightKm)) : 8.5);
|
||||
var ATMO_MODEL_SCALE_HEIGHT_UNITS = ATMO_MODEL_SCALE_HEIGHT_KM / KM_PER_TILE;
|
||||
var ATMO_MODEL_DENSITY = (typeof ATMO_MODEL.density === 'number')
|
||||
? Math.max(0.01, Math.min(5.0, ATMO_MODEL.density)) : 0.12;
|
||||
var ATMO_MODEL_GRAY_TAU = (typeof ATMO_MODEL.grayTau === 'number')
|
||||
? Math.max(0.1, Math.min(10.0, ATMO_MODEL.grayTau)) : 1.5;
|
||||
var ATMO_MODEL_GAIN = (typeof ATMO_MODEL.gain === 'number')
|
||||
? Math.max(0.1, Math.min(5.0, ATMO_MODEL.gain)) : 2.0;
|
||||
var ATMO_MODEL_DENSITY = (typeof HAZE_CFG.density === 'number')
|
||||
? Math.max(0.01, Math.min(5.0, HAZE_CFG.density))
|
||||
: ((typeof ATMO_MODEL.density === 'number')
|
||||
? Math.max(0.01, Math.min(5.0, ATMO_MODEL.density)) : 0.25);
|
||||
var ATMO_MODEL_GRAY_TAU = (typeof HAZE_CFG.grayTau === 'number')
|
||||
? Math.max(0.1, Math.min(10.0, HAZE_CFG.grayTau))
|
||||
: ((typeof ATMO_MODEL.grayTau === 'number')
|
||||
? Math.max(0.1, Math.min(10.0, ATMO_MODEL.grayTau)) : 1.2);
|
||||
var ATMO_MODEL_GAIN = (typeof HAZE_CFG.gain === 'number')
|
||||
? Math.max(0.1, Math.min(5.0, HAZE_CFG.gain))
|
||||
: ((typeof ATMO_MODEL.gain === 'number')
|
||||
? Math.max(0.1, Math.min(5.0, ATMO_MODEL.gain)) : 1.0);
|
||||
var CURV_CFG = (window.CONFIG && window.CONFIG.curvature) || {};
|
||||
var CURVATURE_ON = CURV_CFG.enabled !== false;
|
||||
var CURV_EXAG = (typeof CURV_CFG.exaggeration === 'number')
|
||||
@@ -6364,6 +6377,14 @@ window.clouds3dRender = function(target) {
|
||||
}
|
||||
|
||||
if (ATMO_MODEL_ON) {
|
||||
gl.useProgram(s.prog);
|
||||
gl.bindBuffer(gl.ARRAY_BUFFER, s.buf);
|
||||
gl.enableVertexAttribArray(s.aPos);
|
||||
gl.vertexAttribPointer(s.aPos, 2, gl.FLOAT, false, 0, 0);
|
||||
gl.disable(gl.DEPTH_TEST);
|
||||
gl.depthMask(false);
|
||||
gl.enable(gl.BLEND);
|
||||
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
||||
gl.uniform1i(s.uMode, 2);
|
||||
gl.drawArrays(gl.TRIANGLES, 0, 3);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user