Today I present you my GLSL Astronomy compute shader, which I use in my demo productions and games. ☺
// Copyright (C) 2018, Benjamin "BeRo" Rosseaux (benjamin@rosseaux.de) - License: CC0// Hint: It's not super accurate, but it should be good enough for games and demos with sky rendering.#version 430

layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
uniform vec3 tc; // Time constant

layout(std430) buffer ssboAstronomy { 
 vec3 sunPosition; 
 float sunDistance; 
 vec3 moonPosition; 
 float moonDistance; 
 float moonPhase; 
 mat3 celestialTransform; 
};
const float HalfPI = 1.5707963267948966, // 1.570796326794896619231, 
 PI = 3.141592653589793, // 3.141592653589793238463, 
 PI2 = 6.283185307179586; // 6.283185307179586476925
// The AMD windows GPU drivers do not seem to like constant double precision values here, // so no const prefix in this case.double astronomicalUnitsToKiloMeters = 149597871.0;
const vec2 sinCosOffsets = vec2(0.0, HalfPI);
double … (read more)