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;
}
下一步是勾边。
查看全文
相关阅读:
[置顶] android ListView包含Checkbox滑动时状态改变
Xamarin Android Gestures详解
尝试在条件“$(_DeviceSdkVersion) >= 21”中对计算结果为“”而不是数字的“$(_DeviceSdkVersion)
Xamarin Android自定义文本框
C#四种深拷贝方法(转载)
设置pictureBox的边框颜色(转载)
C# 在运行中拖拽,改变控件大小位置类(转载)
Ocelot + Consul的demo(二)集群部署
Objective-C 简介
计算机网络—概述
原文地址:https://www.cnblogs.com/Pointer/p/34996.html
最新文章
sql里Where条件顺序
多线程相关Interlocked.Increment问题
协变抗变
关于for循环条件性能问题
Mybatis分页插件PageHelper使用
MyBatis框架总结
Spring、Spring MVC、MyBatis等学习教程
WCF服务支持HTTP(get,post)方式请求例子
WCF兼容WebAPI输出Json格式数据,从此WCF一举两得
WCF服务的Web HTTP方式
热门文章
WCF重写ServiceHost,实现独立配置文件
WCF中事务处理
WCF系列教程
postman中 form-data、x-www-form-urlencoded、raw、binary的区别
Xamarin android CardView的使用详解
Xamarin android SwipeRefreshLayout入门实例
[置顶] Xamarin android 调用Web Api(ListView使用远程数据)
discuz管理员登录进入后台管理马上跳转到登录界面
Xamarin Android Fragment的两种加载方式
xamarin Android activity生命周期详解
Copyright © 2011-2022 走看看