feat: daybreak finale turns the contact arrival into a sunrise with a dawn chord
This commit is contained in:
@@ -9,6 +9,7 @@ export function createHorizonAir(resources: SceneResourceBag) {
|
||||
const uniforms = {
|
||||
uTime: { value: 0 },
|
||||
uWarmth: { value: 0 },
|
||||
uDawn: { value: 0 },
|
||||
uColor: { value: new THREE.Color(0xc5646b) },
|
||||
};
|
||||
const material = resources.own(
|
||||
@@ -22,6 +23,7 @@ export function createHorizonAir(resources: SceneResourceBag) {
|
||||
fragmentShader: `
|
||||
uniform float uTime;
|
||||
uniform float uWarmth;
|
||||
uniform float uDawn;
|
||||
uniform vec3 uColor;
|
||||
varying vec2 vUv;
|
||||
void main(){
|
||||
@@ -32,7 +34,7 @@ export function createHorizonAir(resources: SceneResourceBag) {
|
||||
float colorWave=0.5+0.5*sin(vUv.x*7.0+uTime*0.035);
|
||||
vec3 color=mix(uColor,vec3(0.27,0.045,0.75),colorWave*0.55);
|
||||
color=mix(color,vec3(0.05,0.52,0.75),smoothstep(0.54,0.82,vUv.y)*0.3);
|
||||
gl_FragColor=vec4(color,(ribbon*0.16+thin*0.032)*horizontal*(0.7+uWarmth*0.3));
|
||||
gl_FragColor=vec4(color,(ribbon*0.16+thin*0.032)*horizontal*(0.7+uWarmth*0.3)*(1.0+uDawn));
|
||||
#include <tonemapping_fragment>
|
||||
#include <colorspace_fragment>
|
||||
}
|
||||
@@ -53,8 +55,10 @@ export function createHorizonAir(resources: SceneResourceBag) {
|
||||
}
|
||||
return {
|
||||
group,
|
||||
update(palette: Readonly<MutableChapterPalette>, time: number) {
|
||||
/** dawn: END OF SHIFT, the air masses catch first light (gain up to 2x). */
|
||||
update(palette: Readonly<MutableChapterPalette>, time: number, dawn = 0) {
|
||||
uniforms.uTime.value = time;
|
||||
uniforms.uDawn.value = Number.isFinite(dawn) ? Math.min(1, Math.max(0, dawn)) : 0;
|
||||
uniforms.uWarmth.value = palette.warmth;
|
||||
uniforms.uColor.value.copy(palette.sun);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user