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.75
,
0.75
,
0.75
,
1
);
else
if
(diffuse
>
0.33
)
color
=
vec4(
0.63
,
0.63
,
0.63
,
1
);
else
color
=
vec4(
0.50
,
0.50
,
0.50
,
1
);
gl_FragColor
=
color;
}
下一步是勾边。
查看全文
相关阅读:
定时任务时间表达式的规则(自己总结)
本地vagrant配置虚拟域名的坑
商派onex本地部署无法进入的问题
一周一篇文章,立贴为证
Ecshop安装的坑,建议不要使用!
MYSQL查询语句优化
.gitignore文件
剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
Disruptor 为什么这么快?
一篇文章让你成为 NIO 大师 - MyCAT通信模型
原文地址:https://www.cnblogs.com/Pointer/p/34996.html
最新文章
Java编程思想读书笔记
《TCP/IP图解》读书笔记
端口的作用
有效沟通读书笔记
计算机是如何启动的
NAT详解
虚拟机网络配置详解(NAT、桥接、Hostonly)
Apache Avro:一个新的数据交换格式
Log4j容器深入探究
日志收集系统-前奏
热门文章
struts2的核心和工作原理
Apache的配置httpd.conf文件配置
搭建java环境——使用Sublime Text 3(windows环境)
Linux 帳號管理與 ACL 權限設定
Linux 目录与文件管理
Linux 下的权限改变与目录配置
mysql 循环insert
lodop简单入门教程
记一次虚拟机也模拟器齐开被自己坑的经历
关于mysqli_free_result($result)报错
Copyright © 2011-2022 走看看