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;
    }

    下一步是勾边。
  • 相关阅读:
    idea git 操作
    1
    python 迭代器/生成器/迭代对象
    python 中的type
    systemd 配置文件
    python 中类的初始化过程
    mysql主从错误180301
    从零开始搭建k8s-20180301
    kubernetes role
    Java程序员毕业两年自述
  • 原文地址:https://www.cnblogs.com/Pointer/p/34996.html
Copyright © 2011-2022 走看看