init
This commit is contained in:
32
src/Universe.App/Graphics/Shaders/sky.frag.glsl
Normal file
32
src/Universe.App/Graphics/Shaders/sky.frag.glsl
Normal file
@@ -0,0 +1,32 @@
|
||||
#version 330 core
|
||||
#include "noise.glsl"
|
||||
in vec2 vUv;
|
||||
uniform vec3 uForward;
|
||||
uniform vec3 uRight;
|
||||
uniform vec3 uUp;
|
||||
uniform float uAspect;
|
||||
uniform float uTanHalfFov;
|
||||
uniform int uLightCount;
|
||||
uniform vec3 uStarDirections[2];
|
||||
uniform vec3 uStarColors[2];
|
||||
uniform float uStarAngles[2];
|
||||
uniform float uTime;
|
||||
out vec4 fragColor;
|
||||
void main() {
|
||||
vec2 xy=(vUv*2.0-1.0)*uTanHalfFov;
|
||||
vec3 rd=normalize(uForward+uRight*xy.x*uAspect+uUp*xy.y);
|
||||
float band=pow(max(0.0,1.0-abs(dot(rd,normalize(vec3(0.32,0.72,0.48))))),17.0);
|
||||
float dust=smoothstep(-0.26,0.36,fbm(rd*8.0+vec3(4.1,9.2,3.4)));
|
||||
vec3 color=vec3(0.00013,0.00020,0.00042)+vec3(0.0013,0.0016,0.0026)*band*dust;
|
||||
for(int i=0;i<2;i++) {
|
||||
if(i>=uLightCount) break;
|
||||
float angle=acos(clamp(dot(rd,uStarDirections[i]),-1.0,1.0));
|
||||
float r=angle/max(uStarAngles[i],0.00001);
|
||||
float corona=exp(-max(0.0,r-1.0)*6.0)*0.12;
|
||||
corona+=exp(-max(0.0,r-1.0)*1.5)*0.004;
|
||||
corona+=0.0002*exp(-angle*28.0);
|
||||
float strands=0.85+0.15*noise3(rd*18.0+uTime*0.015);
|
||||
color+=uStarColors[i]*corona*strands;
|
||||
}
|
||||
fragColor=vec4(color,1.0);
|
||||
}
|
||||
Reference in New Issue
Block a user