博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
着色器编程学习(一)——类波浪+生成法线
阅读量:6393 次
发布时间:2019-06-23

本文共 1202 字,大约阅读时间需要 4 分钟。

图形着色器——理论与实践(第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;
}

转载于:https://www.cnblogs.com/blueroses/p/6095147.html

你可能感兴趣的文章
C# GDI+绘制一维条码打印模糊的解决办法
查看>>
STL系列 map
查看>>
UVA 825 Walking on the Safe Side(记忆化搜索)
查看>>
Java面试题之一
查看>>
HDOJ 3359 Kind of a Blur
查看>>
Mybatis 示例之 SelectKey
查看>>
jquery批量设置属性readonly和disabled
查看>>
20-ab压力测试及nginx性能统计模块
查看>>
几种常见模式识别算法整理和总结
查看>>
在_Layout模版中使用@Styles.Render()没有效果
查看>>
他叫索隆
查看>>
使用checkstyle来规范你的项目
查看>>
wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍(转)...
查看>>
Loadrunner中影响"响应时间"的设置
查看>>
进入css3动画世界(二)
查看>>
2017 部门文化宣贯会议内容
查看>>
南方的养老金拿去支援东北,解燃眉之急!这位专家的建议,让网友议论开了...
查看>>
微服务网关哪家强?一文看懂Zuul, Nginx, Spring Cloud, Linkerd性能差异
查看>>
花7年时间发布一款测试版游戏是种什么体验?
查看>>
携程晋升6位副总裁 多为加盟10年以上骨干员工
查看>>