Subversion Repositories gelsvn

Rev

Rev 662 | Rev 664 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 662 Rev 663
Line 452... Line 452...
452
    "	{\n"
452
    "	{\n"
453
    "       vec3 normal = normalize(_normal);\n"
453
    "       vec3 normal = normalize(_normal);\n"
454
    "		float dot_ln = max(0.0,dot(light_dir, normal));\n"
454
    "		float dot_ln = max(0.0,dot(light_dir, normal));\n"
455
    "		\n"
455
    "		\n"
456
    "		float s_norm = s/scalar_max;\n"
456
    "		float s_norm = s/scalar_max;\n"
457
    "		float stripe_signal = 400.0 * s_norm;\n"
457
    "		float stripe_signal = 50.0 * s_norm;\n"
458
    "		vec4 stripe_col = vec4(.9,.9,.9,0);\n"
458
    "		vec4 stripe_col = vec4(.9,.9,.9,0);\n"
459
    "		\n"
459
    "		\n"
460
    "		gl_FragColor = max(vec4(0), s_norm * vec4(-1,0,1,0));\n"
460
    "		gl_FragColor = max(vec4(0), s_norm * vec4(-1,0,1,0));\n"
461
    "       gl_FragColor *= dot_ln;\n"
461
    "       gl_FragColor *= dot_ln;\n"
462
    "       gl_FragColor.r = pow(gl_FragColor.r, 1.0/gamma);\n"
462
    "       gl_FragColor.r = pow(gl_FragColor.r, 1.0/gamma);\n"
463
    "       gl_FragColor.g = pow(gl_FragColor.g, 1.0/gamma);\n"
463
    "       gl_FragColor.g = pow(gl_FragColor.g, 1.0/gamma);\n"
464
    "       gl_FragColor.b = pow(gl_FragColor.b, 1.0/gamma);\n"
464
    "       gl_FragColor.b = pow(gl_FragColor.b, 1.0/gamma);\n"
465
    "		gl_FragColor += stripe_col * pow(cos(stripe_signal),15.0);\n"
465
//    "		gl_FragColor += stripe_col * pow(cos(stripe_signal),35.0);\n"
466
    "	}\n";
466
    "	}\n";
467
    
467
    
468
    void ScalarFieldRenderer::compile_display_list(const HMesh::Manifold& m, bool smooth,
468
    void ScalarFieldRenderer::compile_display_list(const HMesh::Manifold& m, bool smooth,
469
                                                   HMesh::VertexAttributeVector<double>& field, double max_val, float gamma)
469
                                                   HMesh::VertexAttributeVector<double>& field, double max_val, float gamma)
470
    {
470
    {
Line 731... Line 731...
731
    
731
    
732
    GLuint HarmonicsRenderer::prog_P0 = 0;
732
    GLuint HarmonicsRenderer::prog_P0 = 0;
733
    GLGraphics::Console::variable<float> HarmonicsRenderer::display_harmonics_time;
733
    GLGraphics::Console::variable<float> HarmonicsRenderer::display_harmonics_time;
734
    GLGraphics::Console::variable<int> HarmonicsRenderer::display_harmonics_diffuse;
734
    GLGraphics::Console::variable<int> HarmonicsRenderer::display_harmonics_diffuse;
735
    GLGraphics::Console::variable<int> HarmonicsRenderer::display_harmonics_highlight;
735
    GLGraphics::Console::variable<int> HarmonicsRenderer::display_harmonics_highlight;
-
 
736
 
-
 
737
    GLGraphics::Console::variable<int> HarmonicsRenderer::display_harmonics_e0;
-
 
738
    GLGraphics::Console::variable<int> HarmonicsRenderer::display_harmonics_e1;
736
    
739
    
737
    string vss =
740
    string vss =
738
	"#version 120\n"
741
	"#version 120\n"
739
	"#extension GL_EXT_gpu_shader4 : enable\n"
742
	"#extension GL_EXT_gpu_shader4 : enable\n"
740
	"	\n"
743
	"	\n"
Line 808... Line 811...
808
            
811
            
809
            
812
            
810
            display_harmonics_diffuse.reg(cs, "display.harmonics.diffuse", "");
813
            display_harmonics_diffuse.reg(cs, "display.harmonics.diffuse", "");
811
            display_harmonics_time.reg(cs, "display.harmonics.time", "");
814
            display_harmonics_time.reg(cs, "display.harmonics.time", "");
812
            display_harmonics_highlight.reg(cs, "display.harmonics.highlight", "");
815
            display_harmonics_highlight.reg(cs, "display.harmonics.highlight", "");
-
 
816
            display_harmonics_e0.reg(cs,"display.harmonics.e0","");
-
 
817
            display_harmonics_e1.reg(cs,"display.harmonics.e1","");
813
        }
818
        }
814
        draw_adf();
819
        draw_esum();
815
    }
820
    }
816
    
821
    
817
    
822
    
818
    void HarmonicsRenderer::parse_key(unsigned char key)
823
    void HarmonicsRenderer::parse_key(unsigned char key)
819
    {
824
    {
Line 862... Line 867...
862
        }
867
        }
863
        glFrontFace(GL_CCW);
868
        glFrontFace(GL_CCW);
864
        glUseProgram(0);
869
        glUseProgram(0);
865
        glEndList();
870
        glEndList();
866
    }
871
    }
-
 
872
 
-
 
873
    void HarmonicsRenderer::draw_esum()
867
    
874
    {
-
 
875
        VertexAttributeVector<double> F;
-
 
876
        double F_max = h->compute_esum(F, display_harmonics_e0, display_harmonics_e1);
-
 
877
        cout << "F max" <<  F_max << endl;
-
 
878
        
-
 
879
        glNewList(display_list, GL_COMPILE);
-
 
880
        glUseProgram(prog_P0);
-
 
881
        glUniform1f(glGetUniformLocation(prog_P0,"eig_max"),F_max);//2*M_PI);
-
 
882
        glUniform1i(glGetUniformLocation(prog_P0,"do_diffuse"),display_harmonics_diffuse);
-
 
883
        glUniform1i(glGetUniformLocation(prog_P0,"do_highlight"),display_harmonics_highlight);
-
 
884
        GLuint attrib = glGetAttribLocationARB(prog_P0, "eigenvalue");
-
 
885
        
-
 
886
        glFrontFace(GL_CW);
-
 
887
        for(FaceIDIterator f = m->faces_begin(); f != m->faces_end(); ++f){
-
 
888
            glBegin(GL_TRIANGLES);
-
 
889
            for(Walker w = m->walker(*f); !w.full_circle(); w = w.circulate_face_cw()){
-
 
890
                glVertexAttrib1f(attrib,F[w.vertex()]);
-
 
891
                glNormal3dv(normal(*m, w.vertex()).get());
-
 
892
                glVertex3dv(m->pos(w.vertex()).get());
-
 
893
            }
-
 
894
            glEnd();
-
 
895
        }
-
 
896
        glFrontFace(GL_CCW);
-
 
897
        glUseProgram(0);
-
 
898
        glEndList();
-
 
899
    }
-
 
900
 
868
 
901
 
869
    
902
    
870
}
903
}
871
 
904
 
872
 
905