CG基础01-原理->数据类型

转载 2015年07月10日 14:09:37

CG图形绘制管线的三个阶段:

1.应用程序阶段

2.几何阶段 :主要负责顶点坐标变换、光照、裁剪、投影以及屏幕映射

3.光栅化阶段:决定哪些像素被集合图元覆盖的过程(Rasterization is the process of 
determining the set of pixels covered by a geometric primitive) 。经过上面诸多坐标
转换之后,现在我们得到了每个点的屏幕坐标值(Screen coordinate) ,也知道我
们需要绘制的图元(点、线、面)

问题二涉及到具体的画线算法,以及区域图元填充算法。通常的画线算
法有 DDA 算法、Bresenham画线算法;区域图元填充算法有,扫描线多边形填
充算法、边界填充算法等,具体请参阅《计算机图形学(第二版) 》第 3 章。 
这个过程结束之后,顶点(vertex)以及绘制图元(线、面)已经对应到像素
(pixel)。下面阐述的是“如何处理像素,即:给像素赋予颜色值”。

Pixel operation又称为 Raster Operation(在文献【2】中是使用 Raster 
Operation) ,是在更新帧缓存之前,执行最后一系列针对每个片段的操作,其目
的是:计算出每个像素的颜色值。在这个阶段,被遮挡面通过一个被称为深度测
试的过程而消除,这其中包含了很多种计算颜色的方法以及技术。Pixel operation
包含哪些事情呢? 
1:消除遮挡面 
2:Texture operation,纹理操作,也就是根据像素的纹理坐标,查询对应的
纹理值; 
3:Blending  29
   混色,根据目前已经画好的颜色,与正在计算的颜色的透明度(Alpha) ,
混合为两种颜色,作为新的颜色输出。通常称之为alpha混合技术。  当在屏幕
上绘制某个物体时,与每个像素都相关联的哟一个RGB 颜色值和一个 Z缓冲器
深度值,另外一个称为是alpha 值,可以根据需要生成并存储,用来描述给定像
素处的物体透明度。如果alpha 值为1.0,则表示物体不透明;如果值为 0,表示
该物体是透明的,




Cg支持7种基本的数据类型: 

1.  float,32位浮点数据,一个符号位。浮点数据类型被所有的profile支持
(但是 DirectX8 pixel profiles在一些操作中降低了浮点数的精度和范围) ; 
2.  half,16为浮点数据; 
3.  int,32位整形数据,有些profile 会将 int类型作为 float 类型使用; 
4.  fixed,12位定点数,被所有的 fragment profiles 所支持; 
5.  bool,布尔数据,通常用于 if和条件操作符(?:) ,布尔数据类型被所有的
profiles 支持; 
6.  sampler*,纹理对象的句柄(the handle to a texture object) ,分为 6类:
sampler, sampler1D, sampler2D, sampler3D, samplerCUBE,和samplerRECT。
DirectX profiles 不支持 samplerRECT类型, 除此之外这些类型被所有的 pixel 
profiles和  NV40 vertex program profile 所支持(CgUsersManual 30页) 。由
此可见,在不远的未来,顶点程序也将广泛支持纹理操作; 
7.  string,字符类型,该类型不被当前存在的 profile所支持,实际上也没有
必要在Cg程序中用到字符类型,但是你可以通过 Cg runtime API声明该类

型变量,并赋值;因此,该类型变量可以保存 Cg文件的信息。 

前 6种类型会经常用到,事实上在 Wikipedia有关 Cg语言的阐述中只列举
了前 6种类型,而并没有提到string数据类型。除了上面的基本数据类型外,Cg
还提供了内置的向量数据类型(built-in vector data types),内置的向量数据类型基
于基础数据类型。例如:float4,表示 float 类型的 4 元向量;bool4,表示 bool
类型 4 元向量。 
注意: 向量最长不能超过 4元, 即在 Cg程序中可以声明 float1、 float2、 float3、
float4 类型的数组变量,但是不能声明超过4元的向量,例如: 
 
float5 array;//编译报错 
 
向量初始化方式一般为: 
 
float4 array = float4(1.0, 2.0, 3.0, 4.0); 
 
较长的向量还可以通过较短的向量进行构建: 
 
float2 a = float2(1.0, 1.0); 
float4 b = float4(a, 0.0, 0.0); 
 
此外,Cg还提供矩阵数据类型,不过最大的维数不能超过 4*4阶。例如: 
float1x1 matrix1;//等价于 float matirx1; x是字符,并不是乘号! 
float2x3 matrix2;// 表示2*3阶矩阵,包含6 个 float 类型数据 
float4x2 matrix3;//  表示4*2阶矩阵,包含8 个 float 类型数据 
float4x4 matrix4;//表示4*4阶矩阵,这是最大的维数 
 
矩阵的初始化方式为: 
 
float2x3 matrix5 = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};


shader Cg 基本数据类型

1.基本数据类型:Cg支持7种基本的数据类型,分别是:float, 32 位浮点数据,一个符号位。浮点数据类型被所有的 profile 支持 half,16 为浮点数据 int,32 位整形数据,...
  • u011484013
  • u011484013
  • 2016年11月22日 19:44
  • 1558

深入Java基础(一)——基本数据类型及其包装类

这一系列打算慢慢地去接触源码,并且列出相关的题目,对于完全的初学者的话,我到时候会搜一套我认为比较好的培训机构的视频以及给些社区资料和相关博客咯。让我们一起开始思考,深入学习Java吧。这篇文章就数据...
  • Jack__Frost
  • Jack__Frost
  • 2016年12月21日 22:18
  • 6261

【CG物理模拟系列】开篇:介绍(上)

本科时候学过游戏制作,经常使用过unity,cocos2d,unreal等游戏引擎,也学过一些计算机图形学知识(模型处理方向)。那时候觉得游戏制作还蛮简单的,只要有精美贴图,好模型,加上一些剧情,以及...
  • Knight_Lyh
  • Knight_Lyh
  • 2016年03月16日 17:44
  • 1153

【幻化万千戏红尘】千峰培训Day01-java基础学习:历史、数据类型

课堂笔记: 今日内容: Java的版本发展: java是sun开发高级语言,1995 2014年3月最新版本为8.0 Java的分支: 1、JAVASE:标准版,Java入门和桌面应用程序...
  • qq_24074907
  • qq_24074907
  • 2016年07月20日 16:35
  • 289

黑马程序员_java基础学习笔记01_变量,数据类型,运算符

------- android培训、java培训、期待与您交流! ----------
  • Troy_Fu
  • Troy_Fu
  • 2015年05月21日 17:52
  • 264

Java基础知识01-基本数据类型

package cn.aparke.bbs.day01;public class TestVariable { /* * java中对应的基本数据类型有以下8种: * 1....
  • taohuaxaiozhai
  • taohuaxaiozhai
  • 2017年12月23日 18:28
  • 19

python基础和数据类型(01,02)

##1.www.tiobe.org        ##计算机开发年度大奖 ##python的版本特性: #python2.7最新,2版本将不在作后续开发 #python3推出    与2特性一样,但...
  • magic__xu
  • magic__xu
  • 2017年06月28日 20:42
  • 126

【C语言基础】-01数据类型

前言:【C语言基础】系列文章是根据C Primer Plus(第五版)中文版一书内容加以逻辑性概括。 数据类型 一、整形类型 整形数据包括int、short、long、long long等。 关于各...
  • willows0312
  • willows0312
  • 2016年07月15日 21:45
  • 103

oracle 基础学习01----服务启动|语句定义|数据类型

1. Oracle服务的启动 为了加快电脑的启动速度,在安装好oracle之后,在管理工具的服务选项之中,将oracle服务作为手动启动(oracleservice[sid]),当需要启动之时,再打开...
  • u011429664
  • u011429664
  • 2013年07月22日 14:59
  • 476

MSSQLServer基础01(数据类型)

数据库设计:范式 现阶段,必须遵守满足3NF 1范式:列的原子性,即列不可再拆分 2范式:表中不能描述多个信息,不能有数据冗余 3范式:引用其它表的主键信息 数据...
  • XHQT520
  • XHQT520
  • 2016年01月11日 19:21
  • 184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CG基础01-原理->数据类型
举报原因:
原因补充:

(最多只允许输入30个字)