Subversion Repositories gelsvn

Rev

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

Rev 557 Rev 566
Line 460... Line 460...
460
        glUseProgram(old_prog);
460
        glUseProgram(old_prog);
461
        
461
        
462
    }
462
    }
463
    
463
    
464
    
464
    
465
    LineFieldRenderer::LineFieldRenderer(const Manifold& m, bool smooth, VertexAttributeVector<Vec3d>& lines, float _r, float line_scale, float noise_scale, float noise_amplitude): 
465
    LineFieldRenderer::LineFieldRenderer(const Manifold& m, bool smooth, VertexAttributeVector<Vec3d>& lines, float _r): 
466
    SimpleShaderRenderer(vss,fss), r(_r)
466
    SimpleShaderRenderer(vss,fss), r(_r)
467
    {
467
    {
-
 
468
        float noise_scale = 30.0/r;
-
 
469
        float line_scale = 0.05/r;
-
 
470
        float noise_amplitude = 0.1;
-
 
471
        
468
        GLint old_prog;
472
        GLint old_prog;
469
        glGetIntegerv(GL_CURRENT_PROGRAM, &old_prog);
473
        glGetIntegerv(GL_CURRENT_PROGRAM, &old_prog);
470
        glUseProgram(prog);	
474
        glUseProgram(prog);	
471
        //    static float& line_scale = CreateCVar("display.line_field_renderer.line_length", .015f);
-
 
472
        //    static float& noise_scale = CreateCVar("display.line_field_renderer.noise_scale", 12.0f/r);
-
 
473
        //    static float& noise_amplitude = CreateCVar("display.line_field_renderer.noise_amplitude", .06f);
-
 
474
        glUniform1fARB(glGetUniformLocationARB(prog, "scale_line"),line_scale);
475
        glUniform1fARB(glGetUniformLocationARB(prog, "scale_line"),line_scale);
475
        glUniform1fARB(glGetUniformLocationARB(prog, "noise_scale"),noise_scale);
476
        glUniform1fARB(glGetUniformLocationARB(prog, "noise_scale"),noise_scale);
476
        glUniform1fARB(glGetUniformLocationARB(prog, "noise_amplitude"),noise_amplitude);	
477
        glUniform1fARB(glGetUniformLocationARB(prog, "noise_amplitude"),noise_amplitude);	
477
        glUniform1iARB(glGetUniformLocationARB(prog, "noise_tex"),0);
478
        glUniform1iARB(glGetUniformLocationARB(prog, "noise_tex"),0);
478
        GLuint direction = glGetAttribLocation(prog, "direction");	
479
        GLuint direction = glGetAttribLocation(prog, "direction");	
Line 536... Line 537...
536
    "uniform float noise_scale;\n"
537
    "uniform float noise_scale;\n"
537
    "varying vec3 _n;\n"
538
    "varying vec3 _n;\n"
538
    "varying vec3 dir_obj;\n"
539
    "varying vec3 dir_obj;\n"
539
    "varying vec3 v_obj;\n"
540
    "varying vec3 v_obj;\n"
540
    "\n"
541
    "\n"
541
    "float tex(vec3 p) {return smoothstep(0.23,0.25,texture3D(noise_tex, p).x);}\n"
542
    "float tex(vec3 p) {return smoothstep(0.2,0.3,texture3D(noise_tex, p).x);}\n"
542
    "void main(void)\n"
543
    "void main(void)\n"
543
    "{\n"
544
    "{\n"
544
    "   vec3 n = normalize(_n);\n"
545
    "   vec3 n = normalize(_n);\n"
545
    "   float I = "
546
    "   float I = "
546
    "             tex(noise_scale*v_obj + 6.0*scale_line*dir_obj) + \n"
547
    "             tex(noise_scale*v_obj + 6.0*scale_line*dir_obj) + \n"
Line 556... Line 557...
556
    "             tex(noise_scale*v_obj + 1.0*scale_line*dir_obj) + \n"
557
    "             tex(noise_scale*v_obj + 1.0*scale_line*dir_obj) + \n"
557
    "             tex(noise_scale*v_obj - 1.0*scale_line*dir_obj) + \n"
558
    "             tex(noise_scale*v_obj - 1.0*scale_line*dir_obj) + \n"
558
    "			  tex(noise_scale*v_obj); \n"
559
    "			  tex(noise_scale*v_obj); \n"
559
    "	\n"
560
    "	\n"
560
    "   float diff = max(0.0,dot(n,vec3(0.0, 0.0, 1.0)));\n"
561
    "   float diff = max(0.0,dot(n,vec3(0.0, 0.0, 1.0)));\n"
561
    "	gl_FragColor.rgb = vec3(1)*diff*I*(1.0/13.0);\n"
562
    "	gl_FragColor.rgb = vec3(diff*I*(1.0/13.0));\n"
562
    "	gl_FragColor.a = 1.0;\n"
563
    "	gl_FragColor.a = 1.0;\n"
563
    "}\n";
564
    "}\n";
564
    
565
    
565
    const string DualVertexRenderer::vss = 
566
    const string DualVertexRenderer::vss = 
566
    "#version 120\n"
567
    "#version 120\n"