zoukankan      html  css  js  c++  java
  • 着色器编程学习(一)——类波浪+生成法线

    图形着色器——理论与实践(第2版) 

    这个书在一些翻译上比较坑,而且案例都是都不完整,更重要的是中文翻译版本竟然没有书的网站也就是说没有案例代码。

    所以在此我说一下网址:http://cgeducation.org/ShadersBookSecond/Source/

    Demo.glib

    Ortho -1. 1. -1. 1 .. 1 1000.
    Vertex demo.vert
    Fragment demo.frag
    Program Dome
    Color 1. .5 0.

    QuadXY -2. 5. 200 200

    demo.vert


    in vec4 aVertex;
    in vec4 aColor;

    varying float vLightIntensity;
    varying vec3 vColor;
    vec3 LIGHTPOS =vec3(0.,2.,0.);
    vec3 ECpos;
    void main(void)
    {
    vec4 thisPos=aVertex;
    vColor=aColor.rgb;

    float thisX=thisPos.x;
    float thisY=thisPos.y;
    vec2 thisXY=thisPos.xy;
    thisPos.z=0.3*sin(dot(thisXY,thisXY));

    //计算法线,求微分
    vec3 xtangent=vec3(1.,0.,0.);
    xtangent.z=2.*0.3*thisX*cos(dot(thisXY,thisXY));
    vec3 ytangent=vec3(0.,1.,0.);
    ytangent.z=2.*0.3*thisY*cos(dot(thisXY,thisXY));

    vec3 thisNormal=normalize(cross(xtangent,ytangent));
    vec3 ECpos=vec3(gl_ModelViewMatrix*thisPos);
    vLightIntensity=dot(normalize(LIGHTPOS-ECpos),thisNormal);
    vLightIntensity=0.3+abs(vLightIntensity); //环境光
    vLightIntensity=clamp(vLightIntensity,0.0,1.0);
    gl_Position=gl_ModelViewProjectionMatrix*thisPos;

    }

    demo.frag


    in vec4 vColor;
    in float vLightIntensity;

    void
    main(void)
    {
    gl_FragColor = vColor*vLightIntensity;
    }

  • 相关阅读:
    Python 正则表达式入门
    使用numpy与matplotlib.pyplot画图
    快乐python 零基础也能P图 —— PIL库
    Jieba库使用和好玩的词云
    python运用turtle 画出汉诺塔搬运过程
    有进度条圆周率计算
    用pythen画五角星
    pytest+allure+requests-接口自动化测试
    pytest---allure测试报告
    自动化测试---pytest
  • 原文地址:https://www.cnblogs.com/blueroses/p/6095147.html
Copyright © 2011-2022 走看看