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;
}
下一步是勾边。
查看全文
相关阅读:
STL学习笔记数值算法
FreeTextBox使用
IOS 通过ObjectiveC读取、解析Excel
在C#中使用访问者(Visitor)模式对组合(Composite)对象进行验证
监测ASP.NET应用程序性能最简单的方法
Web开发常见的几个漏洞解决方法
FTP文件操作之下载文件
你所需要知道的一些git 的使用命令:历史
C#中Hashtable、Dictionary详解以及写入和读取对比
日志组件:log4j、logback、commonlogging
原文地址:https://www.cnblogs.com/Pointer/p/34996.html
最新文章
.NET:在线悲观锁、在线乐观锁、离线悲观锁、离线乐观锁代码示例
Linux 系统启动流程
Google——在用最简单的方式赚钱
用Openfire架设自己的即时聊天服务器(配合如意客户端版)
STL学习笔记排序算法
AgileEAS.NET SOA 平台5.1开发包介绍
理解NetworkSock之FastTcpSreverEx
请思考: 模式的学习和应用
Newlife XCode组件资源目录汇总【2013年版】
原来自己对连接字符串中Min Pool Size的理解是错误的
热门文章
本页使用的CSS
STL学习笔记变易算法
Socket异步通信——使用SocketAsyncEventArgs
理解NetworkSocket之TcpServerBase<TDataEvenArgs>
欧拉公式
分享powershell远程管理经验+免费命令行工具
关于正则的迷思
有效自动化测试策略
学通Java的24堂课
第一个超级简单Node.js实例
Copyright © 2011-2022 走看看