Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 440
- struct Light { vec3 pos; vec3 color; vec3 spot_dir; float spot_exp; float spot_coscutoff; vec3 atten; };
- struct Material2D { vec3 ambient; vec3 refl_diff; vec3 refl_spec; float refl_exp; bool two_sided; };
- struct Material3D { vec3 ambient; vec3 refl_diff; vec3 refl_spec; float refl_exp; vec3 trans_spec; float ior; float alpha; };
- layout(triangles) in;
- layout(triangle_strip,max_vertices=18) out;
- 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;
- uniform mat4 mat_V_cubexn,mat_V_cubexp,mat_V_cubeyn,mat_V_cubeyp,mat_V_cubezn,mat_V_cubezp;
- 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;
- 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];}
- void fill_vertex_out(void) {
- _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;}
- void done_vertex(void) {gl_PointSize=point_size;gl_Position=mat_P*vec_vert_eye;EmitVertex();}
- void done_primitive(void) {EndPrimitive();}
- void main(void) {
- 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];
- mat4 cubemap_matrices[6] = {mat_V_cubexp,mat_V_cubexn,mat_V_cubeyp,mat_V_cubeyn,mat_V_cubezp,mat_V_cubezn};
- for (int layer=0; layer<6; ++layer) {
- mat4 pvm = mat_P * cubemap_matrices[layer] * mat_M;
- gl_Layer = layer;
- for (int i=0; i<gl_in.length(); ++i) {
- fill_vertex_in(i);
- fill_vertex_out();
- gl_Position = pvm * vec_vert_obj;
- EmitVertex();
- }
- EndPrimitive();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement