<@include gpu/Config.slh@> <$VERSION_HEADER$> #line __LINE__ // Generated on <$_SCRIBE_DATE$> // stars.frag // fragment shader // // Created by Bradley Austin Davis on 2015/06/19 varying vec2 varTexcoord; varying vec3 varNomral; varying vec3 varPosition; uniform float iGlobalTime; const float PI = 3.14159; const float TAU = 3.14159 * 2.0; const int latitudeCount = 5; const float latitudeDist = PI / 2.0 / float(latitudeCount); const int meridianCount = 4; const float merdianDist = PI / float(meridianCount); float clampLine(float val, float target) { return clamp((1.0 - abs((val - target)) - 0.998) * 500.0, 0.0, 1.0); } float latitude(vec2 pos, float angle) { float result = clampLine(pos.y, angle); if (angle != 0.0) { result += clampLine(pos.y, -angle); } return result; } float meridian(vec2 pos, float angle) { return clampLine(pos.x, angle) + clampLine(pos.x + PI, angle); } vec2 toPolar(in vec3 dir) { vec2 polar = vec2(atan(dir.z, dir.x), asin(dir.y)); return polar; } void mainVR( out vec4 fragColor, in vec2 fragCoord, in vec3 fragRayOri, in vec3 fragRayDir ) { vec2 polar = toPolar(fragRayDir); //polar.x += mod(iGlobalTime / 12.0, PI / 4.0) - PI / 4.0; float c = 0.0; for (int i = 0; i < latitudeCount - 1; ++i) { c += latitude(polar, float(i) * latitudeDist); } for (int i = 0; i < meridianCount; ++i) { c += meridian(polar, float(i) * merdianDist); } const vec3 col_lines = vec3(102.0 / 255.0, 136.0 / 255.0, 221.0 / 255.0); fragColor = vec4(c * col_lines, 0.2); } void main(void) { mainVR(gl_FragColor, gl_FragCoord.xy, vec3(0.0), normalize(varPosition)); }