zoukankan      html  css  js  c++  java
  • Toon Shading, step 1



    学以致用。:)

    不过略有不同的是我没有采用根据光线强度设置纹理坐标的方式,而是根据光线强度直接确定的当前象素的颜色值。

    SHADER代码如下:

    VertexShader
    //-----------------------------------------------------------------------------
    // vertex shader
    //-----------------------------------------------------------------------------

    uniform vec3 LightPosition;    
    varying 
    float diffuse;

    void main(void){
        vec3 ecPosition    
    = vec3 (gl_ModelViewMatrix * gl_Vertex);
        vec3 tnorm        
    = normalize(gl_NormalMatrix * gl_Normal);
        vec3 lightVec    
    = normalize(LightPosition - ecPosition);
        diffuse   
    = max(dot(lightVec, tnorm), 0.0);

        gl_Position 
    = ftransform();
    }


    FragmentShader
    //-----------------------------------------------------------------------------
    // fragment shader
    //-----------------------------------------------------------------------------

    varying 
    float diffuse;

    void main(void){
        vec4 color;

        
    if (diffuse > 0.66)
            color 
    = vec4(0.750.750.751);
        
    else if (diffuse > 0.33)
            color 
    = vec4(0.630.630.631);
        
    else
            color 
    = vec4(0.500.500.501);

        gl_FragColor 
    = color;
    }

    下一步是勾边。
  • 相关阅读:
    7.2集训模拟赛(莫名其妙的比赛......)
    CF1042B Vitamins
    P1629 邮递员送信
    P1726 上白泽慧音
    P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G
    最短路
    7.1集训模拟赛5(......)
    求最大公约数和最小共倍数的方法(除穷举)
    6.29集训模拟赛3(暴力骗分的一天,嘿嘿)
    爬虫认证ES用户,并访问api
  • 原文地址:https://www.cnblogs.com/Pointer/p/34996.html
Copyright © 2011-2022 走看看