uniform float aspect; uniform mat4 matrix; uniform mat3 dirmatrix; #define DIST_THRES 1e-3 #define MAX_ITER 128 #define MAX_STEP 0.5 vec3 raymarch(inout vec3 p, in vec3 dir, out float depth); vec3 shade(in vec3 p, in vec3 dir, in float dist, in float total_dist); vec3 backdrop(in vec3 dir); float eval_sdf(in vec3 p); vec3 eval_grad(in vec3 p, float dist); vec3 primray(in vec2 uv, out vec3 org); float boxdist(in vec3 p, in vec3 b); float sphdist(in vec3 p, in vec3 sp, in float srad); float fbm(vec3 v, int noct); float snoise(vec3 v); float eval_sdf_gen(in vec3 p); void main() { vec2 uv = gl_TexCoord[0].st; vec3 rorg; vec3 rdir = primray(uv, rorg); float depth; gl_FragColor.rgb = raymarch(rorg, rdir, depth); gl_FragColor.a = 1.0; vec4 projp = gl_ProjectionMatrix * vec4(0.0, 0.0, -depth, 1.0); float zval = projp.z / projp.w; gl_FragDepth = zval; } vec3 raymarch(inout vec3 p, in vec3 dir, out float depth) { float d, total_d = 0.0; for(int i=0; i