Per-vertex渲染技术是针对每个顶点进行渲染计算,然后把计算得到的颜色值和这个顶点关联起来。然后在多边形的面上进行颜色插值以后的平滑的渲染效果。这也叫做Gouraud Shading。在早起的OpenGL版本中,它是默认的渲染技术。

有的时候我们需要达到遮掩过一种效果:一个多边形上只有一种颜色,而不是有这种插值方法得到的平滑效果。这个时候的渲染就叫做Flat Shading

下面的图显示两种渲染效果的对比:

Gouraud Shading

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平面着色相关推荐

  1. 着色 Shading,漫反射,高光,环境光,Blinn-Phong 反射模型,Flat Shading,Gouraud Shading,图形管线 Graphics Pipeline渲染总结

    着色 Shading shading:The darkening or coloring of an illustration or diagram with parrel lines or a bl ...

  2. Q80:平坦着色(Flat Shading)和平滑着色(Smooth Shading)——“Q79:怎么用三角形网格(Triangle Mesh)细分曲面”(补充)

    80.1 概述 前面用三角形网格细分球面时,对单个三角形的着色方式采样的是"Flat Shading".即: 通过三角形三顶点的坐标计算出整个三角形的法向量. 这样就导致相邻两个三 ...

  3. 着色Shading(2)(着色的继续、管线和纹理映射)(笔记)

    文章目录 前言 四.高光项(Specular Term) 高光是什么 Blinn-Phong高光项 五.环境光照项(Ambient Term) 环境光照是什么 六.Blinn-Phong反射模型的总结 ...

  4. 用Unity实现Flat Shading

    用Unity实现Flat Shading 要实现平面着色,就要使每个三角面是平滑的,我们可以从像素的法线向量入手,让每个像素的法线都等于该三角面的法线,而不是来自于三个顶点法线的插值.为了求得平面法线 ...

  5. 【计算机图形学入门】笔记8:Shading 2着色(着色频率、图形管线、纹理映射)

    08Shading 2着色(着色频率.图形管线.纹理映射) 前置知识 1.Specular Term 高光 2.Ambient Term 环境光照项 3.最终的成像公式 2.着色频率 1.Flat s ...

  6. Unity Shader - ddx/ddy偏导函数测试,实现:锐化、高度图、Flat shading应用、高度生成法线

    文章目录 ddx, ddy 说明 DirectX - ddx, ddy OpenGL - dFdx, dFdy 伪代码表示 可用它来做什么 简单的边缘突出应用 Shader 边缘突出-锐化-增加差值 ...

  7. [软件渲染器入门]五-平面着色和高氏着色

    译者前言: 本文译自MSDN,原作者为David Rousset,文章中如果有我的额外说明,我会加上[译者注:]. 正文开始: 这可能是整个系列中最棒的部分:如何处理光照!在之前,我们已经搞定了让每个 ...

  8. OpenGL toon shading卡通着色的实例

    OpenGL toon shading卡通着色 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <vmath.h> #include ...

  9. OpenGL4.0学习3.1--初始化OpenGL 4.0

    本教程将是使用OpenGL 4.0的第一个真正的介绍.我们将解决三个主要问题,分别是初始化OpenGL 4.0,关闭它以及使用它进行基本渲染.本教程使用与上一教程相同的类,不同之处在于,我们将为每个类 ...

最新文章

  1. 【正一专栏】读《摆渡人》——原来你在这里
  2. 单列多行转单行单列合并oracle_Oracle - 子查询、TOP - N
  3. linux之LAMP架构搭建
  4. Leetcode--55. 跳跃游戏
  5. HTML5下划线是一个常见的问题
  6. 编码规范一 结构与要求
  7. css 语音,纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
  8. ParaFi Capital资产管理规模超1亿美元,至少投资22家公司或协议
  9. 【Flutter】如何新建项目,运行你的第一个 flutter 工程项目
  10. Windows批处理命令
  11. ftp服务器项目,ftp服务器项目手册.doc
  12. python爬虫之帅哥图片爬取
  13. 云计算效果如何,Mixpanel现身说法
  14. Windows Core Audio APIs(一)介绍
  15. linux不能删除文件命令,无法删除文件的解决办法(rm命令的使用)
  16. JAVA编写程序实现,由键盘输入两个整数,输出其中较大的数。
  17. 无法访问其它家庭组计算机,Win7电脑同一个家庭组或者工作组,电脑无法相互访问...
  18. 计算机任务计划程序已损坏,win10创建任务提示“该任务映像已损坏或已篡改”的解决方法...
  19. android 经纬度工具类,计算经纬度距离工具类
  20. 战地1修改服务器,战地1服务器设置教程

热门文章

  1. linux那些事之 page translation(硬件篇)
  2. Linux显卡驱动|CUDA卸载和安装|pytorch安装
  3. nvidia-smi‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
  4. 快微音频课程小程序v3.8.4+前端
  5. 机器人多用途综合官网展示PHP单页源码
  6. 5 点击图换下一张_如何制作一张高点击率主图
  7. mysql 数据库查看锁表_【数据库】MySQL查看是否锁表
  8. c语言while队列不为空,C语言实现循环队列的初始化进队出队读取队头元素判空-2...
  9. 算法只能应用于计算机吗,把你的原则转换成算法,让计算机和你一起决策
  10. 云贝连锁V2独立版V2.1.5源码-优化扫码登陆流程