第三章 Shader Language(着色语言)

Shader Language属于高级语言,目的是基于物体本身属性和光照条件,计算每个像素的颜色值。包括如下几种语言:GLSL(基于OpenGL)、Cg(C for Graphic (NVIDIA公司))、HLSL(High Level Shading Language(基于Direct 3D))。

硬件相关:Programmable Vertex Processor(可编程顶点处理器/顶点着色器)和Programmable Fragment Processor(可编程片段处理器/片段着色器)。

Vertex program(顶点程序)负责顶点坐标变换;Fragment program(片段程序)负责像素颜色计算;前者的输出是后者的输入。

Vertex program从GPU前端模块(寄存器)提取图元信息(顶点位置、法向量、纹理坐标等),并完成顶点坐标空间转换、法向量空间转换、光照计算等操作,结果送到指定寄存器;Fragment program从中取出”纹理坐标、光照信息“等,结合纹理信息进行每个片段的颜色计算,最后将数据送入光栅操作模块。

Fragment program还拥有检索纹理的能力。对GPU而言,纹理等价于数组。所谓的片段就是所有三维顶点在光栅化后的数据集,这些数据还未经过深度值比较,而屏幕像素是比较后的。

第四章 Cg语言(C for Graphics)

Cg语言是NVIDIA与Microsoft合作研发的,旨在为开发人员提供一套方便、跨平台、控制可编程图形硬件的高级语言,使用Cg语言编写的着色程序文件后缀是*.cg。

cgc.exe是NVIDIA提供的程序编译器,目前没有IDE,只能将文本文件后缀改为.cg。NShader插件可支持编写着色程序。Gg同时被OpenGL和Direct3D两种编程API所支持。

语言处理程序——编译程序。静态编译:一旦编译为可执行文件,在可执行文件运行期间不再需要源码信息。Cg语言通常采用动态编译的方式,在宿主程序运行时利用Cg运行库动态编译Cg代码。Cg编译器首先将Cg程序翻译成可被图形API(OpenGL和Direct3D)所接收的形式,传递给图形处理器后,OpenGL和Direct3D驱动程序最后把它翻译成图形处理器所需的硬件可执行格式。

CG Profile :被特定的图形硬件或API所支持的Cg语言子集。

《GPU编程与CG语言之阳春白雪下里巴人》阅读笔记 第三章+第四章相关推荐

  1. GPU编程与CG语言之阳春白雪下里巴人 读书笔记

    CHPT2 GPU图形绘制管线 本章作者对GPU图形渲染管线做了深入浅出的总结概括. 所谓渲染管线即图形是如何从三维空间变换到我们二维的屏幕上的.具体的过程可以分为如下几步: 几何阶段   主要工作是 ...

  2. 计算机图形学绘制多边形代码_《GPU编程与CG语言之阳春白雪下里巴人》- 第二章(GPU 图形绘制管线)...

    第二章 GPU 图形绘制管线 万事开头难,每门科学都是如此. ------ 马克思 图形绘制管线描述 GPU 渲染流程,即"给定视点.三维物体.光源.照明模式,和纹理等元素,如何绘制一幅二维 ...

  3. 学习笔记-《GPU 编程与CG 语言之阳春白雪下里巴人》

    第一章 绪论 1.1 Programmable Graphics Processing Unit 发展历程 Programmable Graphics Processing Unit( GPU),即可 ...

  4. GPU 编程与CG 语言之阳春白雪下里巴人——CG学习读书笔记之数学函数(之一)。

    1.abs(x) 取得输入参数的绝对值. 2.acos(x) 反余切函数,为cos(x)的反函数,原来得到Y作为输入,的到对应的角度. (其实只要记得作用是:得到角度,值域为[0,π],输入范围为[- ...

  5. c语言第六版第四章答案,C primer plus 第六版 第6版 004章 第四章 编程 练习 答案 中文...

    第四章 编程练习 1.编写一个程序,提示用户输入名和姓,然后以『名,姓』的格式打印出来. char name[40]; char family[40]; printf("请输入名和姓:\n& ...

  6. 《Python编程:从入门到实战》学习笔记(第2版) 第1-2章 起步变量和简单数据类型

    [写在前面]为进一步提高自己的python代码能力,打算把几本经典书籍重新过一遍,形成系统的知识体系,同时适当记录一些学习笔记,我尽量及时更新!先从经典的<Python编程:从入门到实战> ...

  7. Linux网络编程(网络七层协议,TCP/IP,三次握手四次挥手,TCP/UDP的区别)

    1.OSI 7层网络模型 1.网络七层协议 (1)OSI定义了网络互连的七层框架(物理层.数据链路层.网络层.传输层.会话层.表示层.应用层),即ISO开放互连系统参考模型. (2)各层功能定义 这里 ...

  8. 《Concurrency in Go》阅读笔记 -- 第三章:Go语言并发组件

    <Concurrency in Go> 本章节从goroutine入手,讲解go语言的各种并发原语.在讲解完goroutine之后,对于传统的内存同步访问的并发原语:sync包中的Mute ...

  9. 【C语言笔记初级篇】第四章:数组入门

    目录 (1)一维数组 A:数组的创建 B:数组初始化 C:一维数组的使用 D:一维数组在内存中的存储 (2)二维数组 A:二维数组的创建 B:二维数组的初始化 C:二维数组的使用 D:二维数组的存储方 ...

  10. C语言——三目运算符的进阶用法,比较三个或者四个数的大小

    一.简介三目运算符 1.三目运算符也叫条件运算符,结合方向是从右至左. 2.三目运算符仅此一个. 3.基本形式:      <表达式1> ? <表达式2> :  <表达式 ...

最新文章

  1. python和javascript详细对比_python与javascript 引入模块的方法对比
  2. uboot启动过程中关闭Caches
  3. 成功启动spark集群程序,使用多台电脑进行计算
  4. 电商大战折射商业伦理缺失形势探讨
  5. linux中兴上网客户端,中兴新支点N-Print,简单高效Linux桌面操作系统网络打印方案...
  6. 在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称...
  7. sqlite迁移mysql(导入导出数据)
  8. java开发环境实验总结_20155229 实验一《Java开发环境的熟悉》实验报告
  9. 学python-当当发布2020程序员新态:左手Python,右手机器学习
  10. Android中常用的一些颜色色值color整理
  11. python壁纸高清图片_详解Python静态网页爬取获取高清壁纸
  12. python数据库管理实例_Python之路【第八篇】:堡垒机实例以及数据库操作
  13. 爱思助手(i4助手) v5.08 官方版​
  14. 100英寸的电视机尺寸到底有多大?需要多少钱?
  15. matlab m文件下载,M文件合集 matlab算法
  16. openlayer 画圆Circle实际半径解决方案
  17. Block 基本使用介绍
  18. 人生经验和学习经验分享!(转)
  19. C语言小游戏“剪刀石头布”
  20. Java学习笔记-线程中countDown()使用

热门文章

  1. 计算机黑屏时间,电脑开机黑屏时间长怎么办?Win10开机黑屏时间很久的解决方法...
  2. Ripple 源码笔记
  3. PSP自制程序打包ISO方法及注意事项
  4. 大专生从零开始重新学习c#的第八天
  5. Normalize.css介绍与使用
  6. linux ftp 取文件,linux下拉取文件的方法
  7. 继承 方法重写 组合(尚学堂视频学习总结_003)
  8. 多线程测速软件带宽叠加设置
  9. 2022-2023年度的AMC数学竞赛报名时间来了
  10. keras的net中使用tensorflow函数, AttributeError: ‘NoneType‘ object has no attribute ‘_inbound_nodes‘