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

    下一步是勾边。
  • 相关阅读:
    如何在VIM中编辑并保存退出!!!
    MapReduce---数据清洗
    构建之法阅读笔记03
    人月神话阅读笔记03
    学习进度报告16
    大道至简阅读笔记03
    大道至简阅读笔记02
    个人总结
    大道至简阅读笔记01
    学习进度报告15
  • 原文地址:https://www.cnblogs.com/Pointer/p/34996.html
Copyright © 2011-2022 走看看