【OpenGL4.0】GLSL-Flat Shading平面着色
2013-09-29 09:45
309 查看
Per-vertex渲染技术是针对每个顶点进行渲染计算,然后把计算得到的颜色值和这个顶点关联起来。然后在多边形的面上进行颜色插值以后的平滑的渲染效果。这也叫做Gouraud Shading。在早起的OpenGL版本中,它是默认的渲染技术。
有的时候我们需要达到遮掩过一种效果:一个多边形上只有一种颜色,而不是有这种插值方法得到的平滑效果。这个时候的渲染就叫做Flat Shading。
下面的图显示两种渲染效果的对比:
![](http://my.csdn.net/uploads/201206/13/1339590612_8934.jpg)
Gouraud Shading
![](http://my.csdn.net/uploads/201206/13/1339590618_8542.jpg)
Flat Shading
在早起的OpenGL版本中,Flat shading效果是通过下列函数调用实现的:
glShadeModel(GL_FLAT)。
而且,当前多边形面所使用的颜色是这个多边形的顶点中最后一个被渲染的顶点的颜色。
在OpenGL4.0中,flat shading效果可以通过对着色器的输入和输出变量使用一个修饰符flat很方便的实现。
在顶点着色器的输出变量和片断着色器要使用作为颜色的输入变量前使用这个修饰符即可。
这个修饰符表明了这个值在传递到片断着色器的时候没有插值发生。
最后多边形的颜色可能是其顶点中最先或最后被渲染的顶点的颜色。可以通过下列函数调用来控制:
glProvokingVertex(GL_FIRST_VERTEX_CONVENTION);
或者是
glProvokingVertex(GL_LAST_VERTEX_CONVENTION);
参考资料:
http://www.futuretech.blinkenlights.nl/gouraud.html
http://graphics.wikia.com/wiki/Flat_shading
http://en.wikipedia.org/wiki/Gouraud_shading
http://www.cs.cmu.edu/~fp/courses/02-graphics/pdf-color/08-shading.pdf
有的时候我们需要达到遮掩过一种效果:一个多边形上只有一种颜色,而不是有这种插值方法得到的平滑效果。这个时候的渲染就叫做Flat Shading。
下面的图显示两种渲染效果的对比:
![](http://my.csdn.net/uploads/201206/13/1339590612_8934.jpg)
Gouraud Shading
![](http://my.csdn.net/uploads/201206/13/1339590618_8542.jpg)
Flat Shading
在早起的OpenGL版本中,Flat shading效果是通过下列函数调用实现的:
glShadeModel(GL_FLAT)。
而且,当前多边形面所使用的颜色是这个多边形的顶点中最后一个被渲染的顶点的颜色。
在OpenGL4.0中,flat shading效果可以通过对着色器的输入和输出变量使用一个修饰符flat很方便的实现。
在顶点着色器的输出变量和片断着色器要使用作为颜色的输入变量前使用这个修饰符即可。
这个修饰符表明了这个值在传递到片断着色器的时候没有插值发生。
最后多边形的颜色可能是其顶点中最先或最后被渲染的顶点的颜色。可以通过下列函数调用来控制:
glProvokingVertex(GL_FIRST_VERTEX_CONVENTION);
或者是
glProvokingVertex(GL_LAST_VERTEX_CONVENTION);
参考资料:
http://www.futuretech.blinkenlights.nl/gouraud.html
http://graphics.wikia.com/wiki/Flat_shading
http://en.wikipedia.org/wiki/Gouraud_shading
http://www.cs.cmu.edu/~fp/courses/02-graphics/pdf-color/08-shading.pdf
相关文章推荐
- 【OpenGL4.0】GLSL-Flat Shading平面着色
- 【OpenGL4.0】GLSL-Flat Shading平面着色
- 【OpenGL4.0】GLSL-Flat Shading平面着色
- OpenGL 4.0 GLSL 实现 平面着色 Implementing flat shading
- GLSL-Flat Shading平面着色
- OpenGL 4.0 用GLSL实现双面渲染
- OpenGL 4.0 GLSL 用立方体贴图和 环境贴图 模拟反射效果
- OpenGL_Qt学习笔记之_03(平面图形的着色和旋转)
- 【OpenGL4.0】GLSL-几何着色器详解和实例(GS:Geometry Shader)
- OpenGL 4.0 GLSL 用单光源 实现逐顶点 漫反射光照模型
- [置顶]OpenGL12-shader(GLSL)着色语言1(代码已上传)
- vc++中OpenGl的环境配置与简单平面多边形的绘制、着色、旋转
- 【OpenGL4.0】GLSL-使用Uniform Block实现着色器的数据共享
- 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形
- OpenGL 4.0 GLSL 用 shadow map 算法 生成阴影
- OpenGL12-shader(GLSL)着色语言4-广告版的实现
- OpenGL 4.0 用GLSL实现双面渲染
- OpenGL 4.0 Shading Language Cookbook - 一本关于着色语言的新书
- OpenGL_Qt学习笔记之_03(平面图形的着色和旋转)
- 【OpenGL4.0】GLSL-几何着色器详解和实例(GS:Geometry Shader)