Subversion Repositories gelsvn

Rev

Rev 657 | Rev 663 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 657 Rev 662
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 = 10.0 * s_norm;\n"
457
    "		float stripe_signal = 400.0 * s_norm;\n"
458
    "		vec4 stripe_col = abs(stripe_signal) < 3.14 ? vec4(-1.0,0,0,0) : vec4(.9,.9,.9,0);\n"
458
    "		vec4 stripe_col = vec4(.9,.9,.9,0);\n"
459
    "		\n"
459
    "		\n"
460
    "		gl_FragColor = 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 * smoothstep(0.8,1.0,cos(stripe_signal));\n"
465
    "		gl_FragColor += stripe_col * pow(cos(stripe_signal),15.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 501... Line 501...
501
        glEndList();	
501
        glEndList();
502
        glUseProgram(old_prog);
502
        glUseProgram(old_prog);
503
        
503
        
504
    }
504
    }
505
 
505
    
-
 
506
    HMesh::VertexAttributeVector<CGLA::Vec2f> CheckerBoardRenderer::param;
-
 
507
 
-
 
508
    const string CheckerBoardRenderer::vss =
-
 
509
    "	attribute vec2 param;\n"
-
 
510
    "	varying vec3 _normal;\n"
-
 
511
    "	varying vec2 uv;\n"
-
 
512
    "	\n"
-
 
513
    "	void main(void)\n"
-
 
514
    "	{\n"
-
 
515
    "		gl_Position =  ftransform();\n"
-
 
516
    "		_normal = normalize(gl_NormalMatrix * gl_Normal);\n"
-
 
517
    "		uv=param;\n"
-
 
518
    "	}\n";
-
 
519
    
-
 
520
    const string CheckerBoardRenderer::fss =
-
 
521
    "	varying vec3 _normal;\n"
-
 
522
    "	varying vec2 uv;\n"
-
 
523
    "   const float pi = 3.14159265359;\n"
-
 
524
    "	const vec3 light_dir = vec3(0,0,1);\n"
-
 
525
    "	\n"
-
 
526
    "	void main()\n"
-
 
527
    "	{\n"
-
 
528
    "       vec3 normal = normalize(_normal);\n"
-
 
529
    "		float dot_ln = max(0.0,dot(light_dir, normal));\n"
-
 
530
    "		vec2 rt = uv;//vec2(length(uv),atan(uv.y, uv.x));\n"
-
 
531
    "		float stripe_signal = smoothstep(-0.001,0.001,sin(2.0*pi*rt.x)*sin(10.0*rt.y));\n"
-
 
532
    "		\n"
-
 
533
    "		gl_FragColor = dot_ln * vec4(0.35,0.25,0.5,0);\n"
-
 
534
   "		gl_FragColor.rgb += 0.7*stripe_signal;\n"
-
 
535
    "	}\n";
-
 
536
    
-
 
537
    void CheckerBoardRenderer::compile_display_list(const HMesh::Manifold& m, bool smooth)
-
 
538
    {
-
 
539
        
-
 
540
        GLint old_prog;
-
 
541
        glGetIntegerv(GL_CURRENT_PROGRAM, &old_prog);
-
 
542
        glUseProgram(prog);
-
 
543
        
-
 
544
        GLuint param_attrib = glGetAttribLocation(prog, "param");
-
 
545
        glNewList(display_list,GL_COMPILE);
-
 
546
 
-
 
547
        for(FaceIDIterator f = m.faces_begin(); f != m.faces_end(); ++f){
-
 
548
            if(!smooth)
-
 
549
                glNormal3dv(normal(m, *f).get());
-
 
550
            if(no_edges(m, *f)== 3)
-
 
551
                glBegin(GL_TRIANGLES);
-
 
552
            else
-
 
553
                glBegin(GL_POLYGON);
-
 
554
            
-
 
555
            
-
 
556
            for(Walker w = m.walker(*f); !w.full_circle(); w = w.circulate_face_ccw()){
-
 
557
                Vec3d n(normal(m, w.vertex()));
-
 
558
                if(smooth)
-
 
559
                    glNormal3dv(n.get());
-
 
560
                glVertexAttrib2fv(param_attrib, param[w.vertex()].get());
-
 
561
                glVertex3dv(m.pos(w.vertex()).get());
-
 
562
            }
-
 
563
            glEnd();
-
 
564
        }
-
 
565
        glEndList();
-
 
566
        glUseProgram(old_prog);
-
 
567
        
-
 
568
    }
-
 
569
 
506
 
570
 
507
 
571
 
508
    const string AmbientOcclusionRenderer::vss =
572
    const string AmbientOcclusionRenderer::vss =
509
    "	attribute float scalar;\n"
573
    "	attribute float scalar;\n"
510
    "	varying vec3 _normal;\n"
574
    "	varying vec3 _normal;\n"