Advertisement
Geometrian

Untitled

Aug 27th, 2014
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.95 KB | None | 0 0
  1. #version 440
  2. struct Light { vec3 pos; vec3 color; vec3 spot_dir; float spot_exp; float spot_coscutoff; vec3 atten; };
  3. struct Material2D { vec3 ambient; vec3 refl_diff; vec3 refl_spec; float refl_exp; bool two_sided; };
  4. struct Material3D { vec3 ambient; vec3 refl_diff; vec3 refl_spec; float refl_exp; vec3 trans_spec; float ior; float alpha; };
  5.  
  6. layout(triangles) in;
  7. layout(triangle_strip,max_vertices=18) out;
  8.  
  9. uniform mat4 mat_P; uniform mat4 mat_V; uniform mat4 mat_Vinv; uniform mat4 mat_M; uniform mat3 mat_N; uniform mat4 mat_VM; uniform mat4 mat_PVM;
  10. uniform mat4 mat_V_cubexn,mat_V_cubexp,mat_V_cubeyn,mat_V_cubeyp,mat_V_cubezn,mat_V_cubezp;
  11. in vec4 _vecs_vert_obj_vg[3],_vecs_vert_wld_vg[3],_vecs_vert_eye_vg[3];vec4 vecs_vert_obj[3],vecs_vert_wld[3],vecs_vert_eye[3];vec4 vec_vert_obj,vec_vert_wld,vec_vert_eye;out vec4 _vec_vert_obj_gf,_vec_vert_wld_gf,_vec_vert_eye_gf;in vec3 _vecs_norm_obj_vg[3],_vecs_norm_wld_vg[3],_vecs_norm_eye_vg[3];vec3 vecs_norm_obj[3],vecs_norm_wld[3],vecs_norm_eye[3];vec3 vec_norm_obj,vec_norm_wld,vec_norm_eye;out vec3 _vec_norm_obj_gf,_vec_norm_wld_gf,_vec_norm_eye_gf;in vec3 _vecs_tang_obj_vg[3],_vecs_tang_wld_vg[3],_vecs_tang_eye_vg[3];vec3 vecs_tang_obj[3],vecs_tang_wld[3],vecs_tang_eye[3];vec3 vec_tang_obj,vec_tang_wld,vec_tang_eye;out vec3 _vec_tang_obj_gf,_vec_tang_wld_gf,_vec_tang_eye_gf;in vec3 _vecs_btng_obj_vg[3],_vecs_btng_wld_vg[3],_vecs_btng_eye_vg[3];vec3 vecs_btng_obj[3],vecs_btng_wld[3],vecs_btng_eye[3];vec3 vec_btng_obj,vec_btng_wld,vec_btng_eye;out vec3 _vec_btng_obj_gf,_vec_btng_wld_gf,_vec_btng_eye_gf;in vec4 _colors_vg[3];vec4 colors[3];vec4 color;out vec4 _color_gf;in vec3 _camera_pos_vg[3];vec3 camera_pos;out vec3 _camera_pos_gf;in vec4 _texcoords_vg[3];vec4 texcoords[3];vec4 texcoord;out vec4 _texcoord_gf;in float _point_size_vg[3];float point_size;out float _point_size_gf;
  12. void fill_vertex_in(int from_index) {vec_vert_obj=vecs_vert_obj[from_index];vec_vert_wld=vecs_vert_wld[from_index];vec_vert_eye=vecs_vert_eye[from_index];vec_norm_obj=vecs_norm_obj[from_index];vec_norm_wld=vecs_norm_wld[from_index];vec_norm_eye=vecs_norm_eye[from_index];vec_tang_obj=vecs_tang_obj[from_index];vec_tang_wld=vecs_tang_wld[from_index];vec_tang_eye=vecs_tang_eye[from_index];vec_btng_obj=vecs_btng_obj[from_index];vec_btng_wld=vecs_btng_wld[from_index];vec_btng_eye=vecs_btng_eye[from_index];color=colors[from_index];texcoord=texcoords[from_index];}
  13. void fill_vertex_out(void) {
  14. _vec_vert_obj_gf=vec_vert_obj;_vec_vert_wld_gf=vec_vert_wld;_vec_vert_eye_gf=vec_vert_eye;_vec_norm_obj_gf=vec_norm_obj;_vec_norm_wld_gf=vec_norm_wld;_vec_norm_eye_gf=vec_norm_eye;_vec_tang_obj_gf=vec_tang_obj;_vec_tang_wld_gf=vec_tang_wld;_vec_tang_eye_gf=vec_tang_eye;_vec_btng_obj_gf=vec_btng_obj;_vec_btng_wld_gf=vec_btng_wld;_vec_btng_eye_gf=vec_btng_eye;_color_gf=color;_camera_pos_gf=camera_pos;_texcoord_gf=texcoord;_point_size_gf=point_size;}
  15. void done_vertex(void) {gl_PointSize=point_size;gl_Position=mat_P*vec_vert_eye;EmitVertex();}
  16. void done_primitive(void) {EndPrimitive();}
  17. void main(void) {
  18.     vecs_vert_obj[0]=_vecs_vert_obj_vg[0];vecs_vert_wld[0]=_vecs_vert_wld_vg[0];vecs_vert_eye[0]=_vecs_vert_eye_vg[0];vecs_vert_obj[1]=_vecs_vert_obj_vg[1];vecs_vert_wld[1]=_vecs_vert_wld_vg[1];vecs_vert_eye[1]=_vecs_vert_eye_vg[1];vecs_vert_obj[2]=_vecs_vert_obj_vg[2];vecs_vert_wld[2]=_vecs_vert_wld_vg[2];vecs_vert_eye[2]=_vecs_vert_eye_vg[2];vecs_norm_obj[0]=_vecs_norm_obj_vg[0];vecs_norm_wld[0]=_vecs_norm_wld_vg[0];vecs_norm_eye[0]=_vecs_norm_eye_vg[0];vecs_norm_obj[1]=_vecs_norm_obj_vg[1];vecs_norm_wld[1]=_vecs_norm_wld_vg[1];vecs_norm_eye[1]=_vecs_norm_eye_vg[1];vecs_norm_obj[2]=_vecs_norm_obj_vg[2];vecs_norm_wld[2]=_vecs_norm_wld_vg[2];vecs_norm_eye[2]=_vecs_norm_eye_vg[2];vecs_tang_obj[0]=_vecs_tang_obj_vg[0];vecs_tang_wld[0]=_vecs_tang_wld_vg[0];vecs_tang_eye[0]=_vecs_tang_eye_vg[0];vecs_tang_obj[1]=_vecs_tang_obj_vg[1];vecs_tang_wld[1]=_vecs_tang_wld_vg[1];vecs_tang_eye[1]=_vecs_tang_eye_vg[1];vecs_tang_obj[2]=_vecs_tang_obj_vg[2];vecs_tang_wld[2]=_vecs_tang_wld_vg[2];vecs_tang_eye[2]=_vecs_tang_eye_vg[2];vecs_btng_obj[0]=_vecs_btng_obj_vg[0];vecs_btng_wld[0]=_vecs_btng_wld_vg[0];vecs_btng_eye[0]=_vecs_btng_eye_vg[0];vecs_btng_obj[1]=_vecs_btng_obj_vg[1];vecs_btng_wld[1]=_vecs_btng_wld_vg[1];vecs_btng_eye[1]=_vecs_btng_eye_vg[1];vecs_btng_obj[2]=_vecs_btng_obj_vg[2];vecs_btng_wld[2]=_vecs_btng_wld_vg[2];vecs_btng_eye[2]=_vecs_btng_eye_vg[2];colors[0]=_colors_vg[0];colors[1]=_colors_vg[1];colors[2]=_colors_vg[2];camera_pos=_camera_pos_vg[0];texcoords[0]=_texcoords_vg[0];texcoords[1]=_texcoords_vg[1];texcoords[2]=_texcoords_vg[2];point_size=_point_size_vg[0];
  19.  
  20.     mat4 cubemap_matrices[6] = {mat_V_cubexp,mat_V_cubexn,mat_V_cubeyp,mat_V_cubeyn,mat_V_cubezp,mat_V_cubezn};
  21.     for (int layer=0; layer<6; ++layer) {
  22.         mat4 pvm = mat_P * cubemap_matrices[layer] * mat_M;
  23.         gl_Layer = layer;
  24.         for (int i=0; i<gl_in.length(); ++i) {
  25.             fill_vertex_in(i);
  26.             fill_vertex_out();
  27.             gl_Position = pvm * vec_vert_obj;
  28.             EmitVertex();
  29.         }
  30.         EndPrimitive();
  31.     }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement