emergency: apply emergency blue tone variation in renderer
This commit is contained in:
1 parent
16c26729c2
commit
22e2bae5bd
1 file changed
+21
-3
Vendored
+21
-3
@@ -3473,7 +3473,10 @@ var EMERGENCY_SPEED_KMH = (typeof EMERGENCY_CFG.speedKmh === 'number') ? Math.ma
|
|||||||
var EMERGENCY_MIN_KM = (typeof EMERGENCY_CFG.minKm === 'number') ? Math.max(5, EMERGENCY_CFG.minKm) : 40;
|
var EMERGENCY_MIN_KM = (typeof EMERGENCY_CFG.minKm === 'number') ? Math.max(5, EMERGENCY_CFG.minKm) : 40;
|
||||||
var EMERGENCY_MAX_KM = (typeof EMERGENCY_CFG.maxKm === 'number') ? Math.max(EMERGENCY_MIN_KM, EMERGENCY_CFG.maxKm) : 80;
|
var EMERGENCY_MAX_KM = (typeof EMERGENCY_CFG.maxKm === 'number') ? Math.max(EMERGENCY_MIN_KM, EMERGENCY_CFG.maxKm) : 80;
|
||||||
var EMERGENCY_RANK_MAX = (typeof EMERGENCY_CFG.rankMax === 'number') ? Math.max(0, Math.min(4, EMERGENCY_CFG.rankMax)) : 1;
|
var EMERGENCY_RANK_MAX = (typeof EMERGENCY_CFG.rankMax === 'number') ? Math.max(0, Math.min(4, EMERGENCY_CFG.rankMax)) : 1;
|
||||||
var EMERGENCY_COLOR = Array.isArray(EMERGENCY_CFG.color) ? EMERGENCY_CFG.color : [0.22, 0.55, 1.0];
|
var EMERGENCY_COLOR = Array.isArray(EMERGENCY_CFG.color) ? EMERGENCY_CFG.color : [0.12, 0.42, 1.0];
|
||||||
|
var EMERGENCY_LED_COLOR = Array.isArray(EMERGENCY_CFG.ledColor) ? EMERGENCY_CFG.ledColor : [0.04, 0.26, 1.0];
|
||||||
|
var EMERGENCY_HALOGEN_COLOR = Array.isArray(EMERGENCY_CFG.halogenColor) ? EMERGENCY_CFG.halogenColor : [0.58, 0.74, 1.0];
|
||||||
|
var EMERGENCY_COLOR_VARIATION = (typeof EMERGENCY_CFG.colorVariation === 'number') ? Math.max(0, Math.min(1, EMERGENCY_CFG.colorVariation)) : 0.55;
|
||||||
var EMERGENCY_FLASH_HZ = (typeof EMERGENCY_CFG.flashHz === 'number') ? Math.max(0.2, Math.min(8, EMERGENCY_CFG.flashHz)) : 2.2;
|
var EMERGENCY_FLASH_HZ = (typeof EMERGENCY_CFG.flashHz === 'number') ? Math.max(0.2, Math.min(8, EMERGENCY_CFG.flashHz)) : 2.2;
|
||||||
var EMERGENCY_NIGHT_ONLY = EMERGENCY_CFG.nightOnly !== false;
|
var EMERGENCY_NIGHT_ONLY = EMERGENCY_CFG.nightOnly !== false;
|
||||||
var EMERGENCY_BRIGHT = (typeof EMERGENCY_CFG.bright === 'number') ? Math.max(0.1, Math.min(6, EMERGENCY_CFG.bright)) : 1.35;
|
var EMERGENCY_BRIGHT = (typeof EMERGENCY_CFG.bright === 'number') ? Math.max(0.1, Math.min(6, EMERGENCY_CFG.bright)) : 1.35;
|
||||||
@@ -4423,6 +4426,9 @@ var CARP_FRAG_SRC = [
|
|||||||
'uniform float uWetGain;', // extra halo on lights when wet',
|
'uniform float uWetGain;', // extra halo on lights when wet',
|
||||||
'uniform float uEmergency;',
|
'uniform float uEmergency;',
|
||||||
'uniform vec3 uEmergencyColor;',
|
'uniform vec3 uEmergencyColor;',
|
||||||
|
'uniform vec3 uEmergencyLedColor;',
|
||||||
|
'uniform vec3 uEmergencyHalogenColor;',
|
||||||
|
'uniform float uEmergencyColorVariation;',
|
||||||
'uniform float uEmergencyFlashHz;',
|
'uniform float uEmergencyFlashHz;',
|
||||||
'uniform float uEmergencyNightOnly;',
|
'uniform float uEmergencyNightOnly;',
|
||||||
'varying float vApproach;',
|
'varying float vApproach;',
|
||||||
@@ -4470,8 +4476,11 @@ var CARP_FRAG_SRC = [
|
|||||||
'smoothstep(-0.1, 0.1, approach));',
|
'smoothstep(-0.1, 0.1, approach));',
|
||||||
'if (uEmergency > 0.5) {',
|
'if (uEmergency > 0.5) {',
|
||||||
'float flash = 0.20 + 0.80 * pow(max(0.0, sin(uTime * uEmergencyFlashHz * 6.2831853 + vSeed * 6.2831853)), 1.35);',
|
'float flash = 0.20 + 0.80 * pow(max(0.0, sin(uTime * uEmergencyFlashHz * 6.2831853 + vSeed * 6.2831853)), 1.35);',
|
||||||
'col = uEmergencyColor * (0.45 + 0.75 * flash);',
|
'float lampVariant = fract(vSeed * 7.13 + 0.317);',
|
||||||
'inten *= 0.45 + 1.15 * flash;',
|
'vec3 lampColor = mix(uEmergencyLedColor, uEmergencyHalogenColor, lampVariant);',
|
||||||
|
'vec3 emergencyBase = mix(uEmergencyColor, lampColor, clamp(uEmergencyColorVariation, 0.0, 1.0));',
|
||||||
|
'col = emergencyBase * (0.45 + 0.75 * flash);',
|
||||||
|
'inten *= (0.45 + 1.15 * flash) * (0.88 + 0.28 * lampVariant);',
|
||||||
'}',
|
'}',
|
||||||
// Switching on/off individually: this vehicle's own threshold sits
|
// Switching on/off individually: this vehicle's own threshold sits
|
||||||
// somewhere in the twilight window, so the A-net lights up piece by
|
// somewhere in the twilight window, so the A-net lights up piece by
|
||||||
@@ -4525,6 +4534,9 @@ function ensureCarPtsProgram(gl) {
|
|||||||
wetGain: gl.getUniformLocation(cpp, 'uWetGain'),
|
wetGain: gl.getUniformLocation(cpp, 'uWetGain'),
|
||||||
emergency: gl.getUniformLocation(cpp, 'uEmergency'),
|
emergency: gl.getUniformLocation(cpp, 'uEmergency'),
|
||||||
emergencyColor: gl.getUniformLocation(cpp, 'uEmergencyColor'),
|
emergencyColor: gl.getUniformLocation(cpp, 'uEmergencyColor'),
|
||||||
|
emergencyLedColor: gl.getUniformLocation(cpp, 'uEmergencyLedColor'),
|
||||||
|
emergencyHalogenColor: gl.getUniformLocation(cpp, 'uEmergencyHalogenColor'),
|
||||||
|
emergencyColorVariation: gl.getUniformLocation(cpp, 'uEmergencyColorVariation'),
|
||||||
emergencyFlashHz: gl.getUniformLocation(cpp, 'uEmergencyFlashHz'),
|
emergencyFlashHz: gl.getUniformLocation(cpp, 'uEmergencyFlashHz'),
|
||||||
emergencyNightOnly: gl.getUniformLocation(cpp, 'uEmergencyNightOnly')
|
emergencyNightOnly: gl.getUniformLocation(cpp, 'uEmergencyNightOnly')
|
||||||
};
|
};
|
||||||
@@ -7477,6 +7489,9 @@ window.clouds3dRender = function(target) {
|
|||||||
gl.uniform1f(carPtsUniforms.wetGain, WET_LIGHT_GAIN);
|
gl.uniform1f(carPtsUniforms.wetGain, WET_LIGHT_GAIN);
|
||||||
gl.uniform1f(carPtsUniforms.emergency, 0.0);
|
gl.uniform1f(carPtsUniforms.emergency, 0.0);
|
||||||
gl.uniform3f(carPtsUniforms.emergencyColor, EMERGENCY_COLOR[0], EMERGENCY_COLOR[1], EMERGENCY_COLOR[2]);
|
gl.uniform3f(carPtsUniforms.emergencyColor, EMERGENCY_COLOR[0], EMERGENCY_COLOR[1], EMERGENCY_COLOR[2]);
|
||||||
|
gl.uniform3f(carPtsUniforms.emergencyLedColor, EMERGENCY_LED_COLOR[0], EMERGENCY_LED_COLOR[1], EMERGENCY_LED_COLOR[2]);
|
||||||
|
gl.uniform3f(carPtsUniforms.emergencyHalogenColor, EMERGENCY_HALOGEN_COLOR[0], EMERGENCY_HALOGEN_COLOR[1], EMERGENCY_HALOGEN_COLOR[2]);
|
||||||
|
gl.uniform1f(carPtsUniforms.emergencyColorVariation, EMERGENCY_COLOR_VARIATION);
|
||||||
gl.uniform1f(carPtsUniforms.emergencyFlashHz, EMERGENCY_FLASH_HZ);
|
gl.uniform1f(carPtsUniforms.emergencyFlashHz, EMERGENCY_FLASH_HZ);
|
||||||
gl.uniform1f(carPtsUniforms.emergencyNightOnly, EMERGENCY_NIGHT_ONLY ? 1.0 : 0.0);
|
gl.uniform1f(carPtsUniforms.emergencyNightOnly, EMERGENCY_NIGHT_ONLY ? 1.0 : 0.0);
|
||||||
var carPtsGroup = function (vbo, count, dash, speed, maxDens) {
|
var carPtsGroup = function (vbo, count, dash, speed, maxDens) {
|
||||||
@@ -7533,6 +7548,9 @@ window.clouds3dRender = function(target) {
|
|||||||
gl.uniform1f(carPtsUniforms.wetGain, WET_LIGHT_GAIN);
|
gl.uniform1f(carPtsUniforms.wetGain, WET_LIGHT_GAIN);
|
||||||
gl.uniform1f(carPtsUniforms.emergency, 1.0);
|
gl.uniform1f(carPtsUniforms.emergency, 1.0);
|
||||||
gl.uniform3f(carPtsUniforms.emergencyColor, EMERGENCY_COLOR[0], EMERGENCY_COLOR[1], EMERGENCY_COLOR[2]);
|
gl.uniform3f(carPtsUniforms.emergencyColor, EMERGENCY_COLOR[0], EMERGENCY_COLOR[1], EMERGENCY_COLOR[2]);
|
||||||
|
gl.uniform3f(carPtsUniforms.emergencyLedColor, EMERGENCY_LED_COLOR[0], EMERGENCY_LED_COLOR[1], EMERGENCY_LED_COLOR[2]);
|
||||||
|
gl.uniform3f(carPtsUniforms.emergencyHalogenColor, EMERGENCY_HALOGEN_COLOR[0], EMERGENCY_HALOGEN_COLOR[1], EMERGENCY_HALOGEN_COLOR[2]);
|
||||||
|
gl.uniform1f(carPtsUniforms.emergencyColorVariation, EMERGENCY_COLOR_VARIATION);
|
||||||
gl.uniform1f(carPtsUniforms.emergencyFlashHz, EMERGENCY_FLASH_HZ);
|
gl.uniform1f(carPtsUniforms.emergencyFlashHz, EMERGENCY_FLASH_HZ);
|
||||||
gl.uniform1f(carPtsUniforms.emergencyNightOnly, EMERGENCY_NIGHT_ONLY ? 1.0 : 0.0);
|
gl.uniform1f(carPtsUniforms.emergencyNightOnly, EMERGENCY_NIGHT_ONLY ? 1.0 : 0.0);
|
||||||
gl.uniform1f(carPtsUniforms.dash, 0.0);
|
gl.uniform1f(carPtsUniforms.dash, 0.0);
|
||||||
|
|||||||
Reference in new issue
Block a user