feat!: raymarcher init with movement
This commit is contained in:
parent
f6c2f2d3d7
commit
5b6d03e1c8
1 changed files with 47 additions and 1 deletions
|
@ -6,20 +6,66 @@ in vec2 texture_coordinates;
|
|||
uniform float time;
|
||||
uniform sampler2D uSampler1;
|
||||
uniform sampler2D uSampler2;
|
||||
uniform vec3 camera_pos;
|
||||
|
||||
// Output
|
||||
out vec4 color;
|
||||
|
||||
const float PI = 3.1415;
|
||||
|
||||
// Raymarching variables
|
||||
#define MAX_ITERATIONS 20
|
||||
#define MIN_TOLERANCE .01
|
||||
|
||||
//const vec3 camera_pos = vec3(0.);
|
||||
const vec3 color1 = vec3(0.494, 0.361, 0.678);
|
||||
const vec3 color2 = vec3(0.827, 0.945, 0.875);
|
||||
|
||||
// Scene Object (sphere)
|
||||
|
||||
// returns the distance from the ray to this sphere in the scene
|
||||
float sphere_render(vec3 ray_pos, float radius, vec3 sphere_pos) {
|
||||
|
||||
return distance(ray_pos, sphere_pos) - radius;
|
||||
}
|
||||
|
||||
float remap11(float val ) {
|
||||
return ((val - .5) * 2.);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void main() {
|
||||
|
||||
// Set up camera and sphere object
|
||||
vec3 ray_dir = normalize(vec3( remap11(texture_coordinates.x) , remap11(texture_coordinates.y), 1.));
|
||||
vec3 ray_pos = camera_pos;
|
||||
const vec3 sphere_pos = vec3(0.,0.,3.);
|
||||
const float rad = 1.;
|
||||
|
||||
for(int i = 0; i < MAX_ITERATIONS; i++) {
|
||||
|
||||
float distance = sphere_render(ray_pos, rad, sphere_pos);
|
||||
|
||||
// Check If within tolerances
|
||||
if( distance < MIN_TOLERANCE) {
|
||||
break;
|
||||
}
|
||||
|
||||
ray_pos += (distance * ray_dir);
|
||||
color = vec4(mix(color1, color2, float(i) / float(MAX_ITERATIONS)),1.);
|
||||
}
|
||||
|
||||
|
||||
// Image stuff for later
|
||||
/*
|
||||
if ((texture_coordinates.x + texture_coordinates.y) > 1.) {
|
||||
color = texture(uSampler1, texture_coordinates);
|
||||
}
|
||||
else {
|
||||
color = texture(uSampler2, texture_coordinates);
|
||||
}
|
||||
}*/
|
||||
|
||||
// Basic color time shift
|
||||
// color = vec4( texture_coordinates, (sin( time * PI) + 1.)/2. , 1.);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue