Advertisement
Guest User

marching_cubes_demo

a guest
Oct 4th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 26.87 KB | None | 0 0
  1. #if you want to visualize using GLVisualize
  2. using GLVisualize,ColorTypes
  3. using GLAbstraction
  4. const vert_shader = """
  5. {{GLSL_VERSION}}
  6. uniform vec3 light[4];
  7. uniform vec3 eyeposition;
  8. in vec3 o_normal;
  9. in vec3 o_vertex;
  10. in vec4 o_color;
  11.  
  12. out vec4 color;
  13.  
  14. void main(){
  15.    float amb_intensity = 0.3;
  16.    float diffuse_intensity = 0.6;
  17.    float specular_power = 0.6;
  18.    float specular_intensity = 0.1;
  19.    vec3 light_color = light[0];
  20.    // vec3 light_position = normalize(light[3] - o_vertex);
  21.    vec3 light_position = normalize(vec3(20.0f,20.0f,20.0f) - o_vertex);
  22.    vec4 ambient_color = vec4(light_color * amb_intensity,1.0f);
  23.    vec3 normal = normalize(o_normal);
  24.    float diffuse_factor = dot(normal,light_position);
  25.  
  26.    vec4 diffuse_color = vec4(light_color,1.0f) *  diffuse_intensity * diffuse_factor;
  27.    vec4 specular_color = vec4(0.0f);
  28.    vec3 vertex_to_eye = normalize(eyeposition-o_vertex);
  29.    vec3 light_reflect = normalize(reflect(-light_position,normal));
  30.    float specular_factor = dot(vertex_to_eye,light_reflect);
  31.    if(specular_factor>0){
  32.        specular_factor = pow(specular_factor,specular_power);
  33.        specular_color = vec4(light_color*specular_intensity*specular_factor,1.0f);
  34.    }
  35.    color = o_color*(ambient_color+diffuse_color);
  36. }"""
  37. const frag_shader = """{{GLSL_VERSION}}
  38. uniform vec3 light[4];
  39. uniform vec3 eyeposition;
  40. in vec3 o_normal;
  41. in vec3 o_vertex;
  42. in vec4 o_color;
  43.  
  44. out vec4 color;
  45.  
  46. void main(){
  47.    float amb_intensity = 0.3;
  48.    float diffuse_intensity = 0.6;
  49.    float specular_power = 0.6;
  50.    float specular_intensity = 0.1;
  51.    vec3 light_color = light[0];
  52.    // vec3 light_position = normalize(light[3] - o_vertex);
  53.    vec3 light_position = normalize(vec3(20.0f,20.0f,20.0f) - o_vertex);
  54.    vec4 ambient_color = vec4(light_color * amb_intensity,1.0f);
  55.    vec3 normal = normalize(o_normal);
  56.    float diffuse_factor = dot(normal,light_position);
  57.  
  58.    vec4 diffuse_color = vec4(light_color,1.0f) *  diffuse_intensity * diffuse_factor;
  59.    vec4 specular_color = vec4(0.0f);
  60.    vec3 vertex_to_eye = normalize(eyeposition-o_vertex);
  61.    vec3 light_reflect = normalize(reflect(-light_position,normal));
  62.    float specular_factor = dot(vertex_to_eye,light_reflect);
  63.    if(specular_factor>0){
  64.        specular_factor = pow(specular_factor,specular_power);
  65.        specular_color = vec4(light_color*specular_intensity*specular_factor,1.0f);
  66.    }
  67.    color = o_color*(ambient_color+diffuse_color);
  68. }"""
  69.  
  70.  
  71. screen = glscreen()
  72. mesh = GLNormalVertexcolorMesh(vertices=test_verts,faces=[Face(i,i+1,i+2) for i=1:3:length(test_verts)],color=[RGBA(1.0f0,0.0f0,0.0f0,0.8f0) for i=1:length(test_verts)],shader=LazyShader(vert_shader,frag_shader))
  73. _view(visualize(mesh),screen,camera=:perspective)
  74. renderloop(screen)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement