Qt 3D的研究(六):Toon Shader
来源:互联网 发布:qq旋风连接不到网络 编辑:程序博客网 时间:2024/04/24 01:34
Qt 3D的研究(六):Toon Shader
在上次的实验中,我们实现了Gooch Shader,并给出了通过调色板进行个性化的Gooch Shader设置。Toon Shader又称Cell Shader,是以离散的颜色来表示光照的强弱。很多动画片的渲染方式都是使用Toon Shader的。下面这样图就可以使用Toon Shader实现。
蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/44084021。欢迎同行前来探讨。
下面是Toon Shader的代码:
// Toon.vert#version 100// Qt 3D默认提供的参数attribute vec3 vertexPosition;attribute vec3 vertexNormal;uniform mat4 modelView;uniform mat4 modelNormalMatrix;uniform mat4 mvp;// 自己提供的参数uniform vec3 lightPosition;varying vec3 reflectVec;varying vec3 viewVec;varying float NdotL;void main( void ){ vec3 ecPos = ( modelView * vec4( vertexPosition, 1.0 ) ).xyz; vec3 normal = normalize( modelNormalMatrix * vec4( vertexNormal, 1.0 ) ).xyz; vec3 lightVec = normalize( lightPosition - ecPos ); reflectVec = normalize( reflect( -lightVec, normal ) ); viewVec = normalize( -ecPos ); NdotL = ( dot( lightVec, normal ) + 1.0 ) * 0.5; gl_Position = mvp * vec4( vertexPosition, 1.0 );}
// Toon.frag#version 100// 自己提供的参数varying vec3 reflectVec;varying vec3 viewVec;varying float NdotL;uniform sampler2D texPalette;float grayTexture( vec4 color ){ return dot( color.xyz, vec3( 0.299, 0.587, 0.114 ) );}void main( void ){ gl_FragColor = texture2D( texPalette, vec2( NdotL, 1.0 ) );}
我们使用的离散纹理如下所示:
程序运行结果如下所示:
0 0
- Qt 3D的研究(六):Toon Shader
- Qt 3D的研究(五):Gooch Shader
- Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader
- Qt 3D的研究(一)
- Qt 3D的研究(二)
- Shader toon 卡通效果
- Qt 3D的研究(七):渲染至纹理
- Qt 3D的研究(八):边缘检测
- Qt 3D的研究(三):显示3D模型
- openGL CG07 – Toon Shader
- 【Unity】Unity自带卡通shader(toon shader)分析(一)
- Qt 3D的研究(四):指定渲染的材质以及效果
- Qt 3D的研究(九):尝试另外一种边缘检测方法
- Unity3d shader之卡通着色Toon Shading
- 3D图形学一:模仿草的运动 – GPU(Pixel Shader & Vertex Shader)实现
- unity中Toon(卡通)材质的下载与实现
- Unity ShaderLab: 2D/3D Wave Flag Shader(飘动旗帜)的实现
- 3D残影Shader
- java 内存机制
- 【转】霍夫圆变换参数
- leetcode Climbing Stairs
- Java线程(七):Callable和Future
- cocos2dx-lua开发旅程(一)
- Qt 3D的研究(六):Toon Shader
- 在tomcat中配置JNDI
- [leetcode]12 Excel Sheet Column Number
- 简单了解下xcode的IB
- 运算符号重载之自己转化为其它
- 几个不错的Shell脚本
- 2015元宵节礼物——《刀塔传奇》骨骼动画查看器,开源啦!
- Android 判断用户2G/3G/4G移动数据网络
- 记事本的一个bug