前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3.2 Vertex Shader Program

3.2 Vertex Shader Program

作者头像
代码咖啡
发布2018-08-28 10:30:52
4990
发布2018-08-28 10:30:52
举报
文章被收录于专栏:程序员叨叨叨程序员叨叨叨

文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》,因笔者读书易中途放弃,遂每读一章节,将其移至简书平台,以此作为对自己读书的勉励。笔者用粗体斜体 标注了关键词句,望感兴趣的读者们一起学习共勉。猛戳这里查看更多!

3.2 Vertex Shader Program

Vertex shader program(顶点着色程序)和 Fragment shader program(片断着 色程序)分别被 Programmable Vertex Processor(可编程顶点处理器)和 Programmable Fragment Processo(可编程片断处理器)所执行。

顶点着色程序从 GPU 前端模块(寄存器)中提取图元信息(顶点位置、法向量、纹理坐标等),并完成顶点坐标空间转换、法向量空间转换、光照计算等操作,后将计算好的数据传送到指定寄存器中;然后片断着色程序从中获取需要的数据,通常为“纹理坐标、光照信息等”,并根据这些信息以及从应用程序传递的纹理信息(如果有的话)进行每个片断的颜色计算,后将处理后的数据送光栅操作模块。

图 10 展示了在顶点着色器像素着色器的数据处理流程。在应用程序中设定的图元信息(顶点位置坐标、颜色、纹理坐标等)传递到 vertex buffer 中;纹理信息传递到 texture buffer 中。其中虚线表示目前还没有实现的数据传递。当前的顶点程序还不能处理纹理信息,纹理信息只能在片断程序中读入。

顶点着色程序与片断着色程序通常是同时存在,相互配合,前者的输出作为后者的输入。不过,也可以只有顶点着色程序。如果只有顶点着色程序,那么只对输入的顶点进行操作,而顶点内部的点则按照硬件默认的方式自动插值。例如, 输入一个三角面片,顶点着色程序对其进行 phong 光照计算,只计算三个顶点的光照颜色,而三角面片内部点的颜色按照硬件默认的算法(Gourand 明暗处理或 者快速 phong 明暗处理)进行插值,如果图形硬件比较先进,默认的处理算法较好(快速 phong 明暗处理),则效果也会较好;如果图形硬件使用 Gourand 明暗处理算法,则会出现马赫带效应(条带化)。

片断着色程序是对每个片断进行独立的颜色计算,并且算法由自己编写, 不但可控性好,而且可以达到更好的效果。

由于 GPU 对数据进行并行处理,所以每个数据都会执行一次 shader 程序程序。即,每个顶点数据都会执行一次顶点程序;每个片段都会执行一次片段程序。

图 10 顶点着色器和像素着色器的数据处理流程

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.2 Vertex Shader Program
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档