NVIDIA cg语言编写shader的学习笔记
来源:互联网 发布:消防做题软件 编辑:程序博客网 时间:2024/05/17 19:17
主要的学习教程是nvidia出的那个《cg教程,可编程实时权威指南》以及三本《GPU编程精粹》
个人能力有限,只能尽量将自己理解的关键点记录下来,有想认真深入的朋友,建议完整的看一遍以上书籍
学习cg语言的主要目的是为了学习unity3d中shader的编写,以及以后可能做opengl,opencv的开发
官方的docment是用c++写opengl接口的程序,然后调用cg语言的.cg 文件来访问gpu硬件,我不会写c++,只好把所有工作都放到unity3d的环境中了,其中有些差异,但不大,主要是unity3d应用程序已经将顶点,法线等信息处理好了,封装了不少使用的东西在它的UNITY.cgnic文件中
一.gpu的发展历史
第一代第二代没有可编程能力,固定管线
第三代支持顶点编程(vertex)
第四代(即现今我们使用的)拥有可编程能力,使得顶点变换和像素操作从cpu转移到gpu中进行
二.gpu的渲染流程
在GPU渲染流水线的不同阶段,需要处理的对象分别是顶点(vertex)、几何图元(primitive)、片元(fragment)、像素(pixel)
顶点变换:将3d application中给定的顶点位置等,变换屏幕位置以便光栅器使用
图元处理:图元装配和光栅化,图元装配即是将顶点装配为几何图元,光栅化决定那些像素被图元覆盖,然后是插值贴图和着色
光栅操作:对片段进行操作(fragment)
三.vertex fragment
结构体:个人理解,用于定义输入输出结构,并绑定语义词,结尾有;,忘记输入;会报错
struct VertexIn{
position:POSITION;
normal:NORMAL;
textoord:TEXTOORD0;
};
语义词:全部大写,书中说是一种粘合剂,把cg程序和图形流水线的其他部分绑定在一起,指明该变量的硬件资源
POSITION
NORMAL
TEXTOORD0
COLOR
等等。。。。。
profile:cg程序用何种接口编译你的cg程序,各种profile对应不同的编程接口及不同能力的gpu硬件
opengl:
direct:
四.顶点 片段的流程和一些解释
变量
uniform修饰词,表示这是一个由外部程序提供的变量
普通变量的声明:type name = value;
例:float4 color = float4(1,1,1,1);
支持的类型:float,half,fixed三种浮点数类型的范围和大小不一样,分别是32bit,16bit,11bit
纹理(texture)
sampler1D
sampler2D
sampler3D
samplerCUBE
samplerRECT
- NVIDIA cg语言编写shader的学习笔记
- 如何系统的学习 Unity 3D 中的 shader 编写nvidia cg 编程
- 如何系统的学习 Unity 3D 中的 shader 编写(nvidia cg 编程)?
- Unity Shader学习5 —— Cg语言的基础
- Shader学习之Cg语言一(Cg语言概述)
- Shader学习之Cg语言二(Cg数据类型)
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(九)—— Cg语言入门1
- Shader编程学习笔记(十)—— Cg语言入门2
- Shader编程学习笔记(九)—— Cg语言入门1
- Shader编程学习笔记(十)—— Cg语言入门2
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(九)—— Cg语言入门1
- Shader编程学习笔记(十)—— Cg语言入门2
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(九)—— Cg语言入门1
- Shader编程学习笔记(十)—— Cg语言入门2
- 关于判别模型和生成模型
- jQuery取得select选择的文本与值
- SVN提示: File or directory '*' is out of date; try updating 解决方案
- TCP/IP协议栈的基本工作原理
- ListView 的使用
- NVIDIA cg语言编写shader的学习笔记
- 南锣鼓巷
- C中.和->的区别
- mysql InnoDB和MyISAM的区别
- windows的cmd终端显示utf-8字符
- Android 点击桌面快捷方式和Notifycation跳转到Task栈顶Activity
- 64win7+64Oracle+32plsql
- 对于使用jquery_ztree的感触
- 重装ASP.NET