koel/resources/assets/js/visualizers/asteroid/shaders/skybox.frag.ts
2024-10-14 00:37:01 +07:00

41 lines
970 B
TypeScript

export const skyboxFrag
= `
#define A 0.15
#define B 0.50
#define C 0.10
#define D 0.20
#define E 0.02
#define F 0.30
uniform samplerCube u_cubemap;
uniform samplerCube u_cubemap_b;
uniform float cross_fader;
uniform float u_exposure;
uniform float u_gamma;
uniform bool u_show_cubemap;
varying vec3 v_direction;
vec3 Uncharted2Tonemap( vec3 x ){
return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;
}
void main( void ){
vec3 cube_a = pow( abs(textureCube( u_cubemap, v_direction ).rgb), vec3( 2.2 ) );
vec3 cube_b = pow( abs(textureCube( u_cubemap_b, v_direction ).rgb), vec3( 2.2 ) );
vec3 color = mix(cube_a, cube_b, cross_fader);
// apply the tone-mapping
// color = Uncharted2Tonemap( color * u_exposure );
// white balance
// color = color * ( 1. / Uncharted2Tonemap( vec3( 20. ) ) );
// gamma correction
// color = pow( color, vec3( 1. / u_gamma ) );
color *= u_show_cubemap ? 1. : 0.;
gl_FragColor = vec4( color, 1. );
}
`