vertex shader(1)
Vertex shader Architecture:

所有在vertex shader中的数据都用128-bit的quad-floats表示(4x32-bit)。

vertex shader线性地执行程序——一个指令(introduction)一个指令地执行。它不允许循环、跳跃、条件分支。在DirectX 8.x中,vertex shader 程序的最大长度被限制在128个指令。用vertex shaders一个用来计算变换(transformation),一个用来计算光照(lighting)是不可能的。在一个时间段,只允许有一个vertex shader是活跃的(active)。每个活跃的vertex shader必须计算所有被要求的每个顶点的输出数据。
一个vertex shader使用16个(v0-v15)输入寄存器(input register)去存取(access)顶点输入数据。顶点输入寄存器可以很容易的存储一个典型的顶点的数据:顶点的坐标位置、法线、漫发射和高光颜色、雾坐标、点的size信息等。
常量寄存器(constant registers)在vertex shader开始处理由程序员定义的参数前被CPU载入。vertex shader不能写入常量寄存器。常量寄存器被用来存储参数例如:光源位置、矩阵、动画特效程序数据、顶点插值数据、关键帧插值等。这些常量能被应用在程序中,甚至能在寻址寄存器(address register) a0.x的帮助下被间接寻址。但是,每个指令只能使用一个常量。如果一个指令需要使用多于一个常量,它必须在它被请求之前载入到一个暂时寄存器(temporary registers)。The names of the constant registers are c0-c95 or, in the case of the ATI RADEON 8500, c0-c191.暂时寄存器(temporary registers)由12个寄存器组成,用来执行中间运算(intermediate calculations)。它们可以被用来载入和存储数据(read/write)。The names of the temporary registers are r0-r11。
有13个输出寄存器(vertex output),依赖于基础硬件。这些寄存器的名字以“o”开始。顶点输出每光栅都是可用的,并且你的Vertex shader程序通过只写(write-only)访问它。执行后,最后的结果是另一个顶点,这个顶点被变换到齐次裁减空间(homogenous clip space)。下面的表格是所有可用的寄存器。

vertex shader(1)的更多相关文章
- vertex shader(4)
Swizzling and Masking 如果你使用输入.常量.临时寄存器作为源寄存器,你可以彼此独立地swizzle .x,.y,.z,.w值.如果你使用输出.临时寄存器作为目标寄存器,你可以把. ...
- vertex shader(3)
之前我们学习了如何声明顶点着色器.如何设置常量寄存器中的常量.接下来我们学习如何写和编译一个顶点着色器程序. 在我们编译一个顶点着色器之前,首先需要写一个. 有17种不同的指令(instruction ...
- vertex shader(2)
一次只有一个vertex shader是活跃的.你可以有多个vertex shader,如果一个物体特殊的变换或者灯光,你可以选择合适的vertex shader来完成这个任务. 你可能想使用vert ...
- 【Unity Shader实战】卡通风格的Shader(二)
写在前面 本系列其他文章: 卡通风格的Shader(一) 好久没写博客了,一定是因为课程作业比较多,一定不是因为我懒,恩恩. 三个月以前,在一篇讲卡通风格的Shader的最后,我们说到在Surface ...
- 【Unity Shader实战】卡通风格的Shader(一)
写在前面 本系列其他文章: 卡通风格的Shader(二) 呜,其实很早就看到了这类Shader,实现方法很多,效果也有些许不一样.从这篇开始,陆续学习一下接触到的卡通类型Shader的编写. 本篇的最 ...
- 学习笔记:GLSL Core Tutorial – Vertex Shader(内置变量说明)
1.每个Vertex Shader都有用户定义的输入属性,例如:位置,法线向量和纹理坐标等.Vertex Shaders也接收一致变量(uniform variables). uniform vari ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——编写自己的shader(2)
在上篇文章中,我给大家介绍了如何在Cocos2d-x里面绘制一个三角形,当时我们使用的是Cocos2d-x引擎自带的shader和一些辅助函数.在本文中,我将演示一下如何编写自己的shader,同时, ...
- Unity Shader (三)Surface Shader机制
转自:http://blog.csdn.net/candycat1992/article/details/39994049 写在前面 一直以来,Unity Surface Shader背后的机制一直是 ...
- Unity Shader (一)ShaderLab 语法
一.什么是Shader Shader(着色器):是可以在GPU上运行的一段程序,通过Shader可以进行一些渲染相关的设置. 二.什么是ShaderLab 目前面向GPU的编程有三种高级图像语言:HL ...
随机推荐
- 关于FreeMarker自定义TemplateDirectiveModel
[转载来源:http://zwllxs.iteye.com/blog/2036826] java代码如下: import freemarker.core.Environment; import fre ...
- BZOJ4128 Matrix 【BSGS】
BZOJ4128 Matrix Description 给定矩阵A,B和模数p,求最小的x满足 A^x = B (mod p) Input 第一行两个整数n和p,表示矩阵的阶和模数,接下来一个n * ...
- python(八):反射
反射机制是通过python3内置的hasattr.getattr.setattr来实现的.即根据变量名的字符串形式来获取变量名的属性或方法. 一.通过反射查看已知对象的属性和方法 getattr(ob ...
- CCF 集合竞价
题目: 问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量. 该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种: 1. buy p s ...
- ORACLE11g 没有控制文件如何通过rman备份恢复数据的详细实战过程
1.副总裁需要裸恢复的严峻现实 集团总部的信息部负责人给我打电话说为了找一年前的记录,所以需要对一年前2015年5月1日的数据进行恢复.而2016年初因为进行迁移,所以有些文件可能丢失,手上只有rma ...
- bzoj 2178 圆的面积并——辛普森积分
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2178 把包含的圆去掉.横坐标不相交的一段一段圆分开算.算辛普森的时候预处理 f( ) ,比如 ...
- zk中文乱码问题
之前讲了怎么把数据导入到zookeeper(见zookeeper事件监听的importData方法),虽然本机win10的zookeeper展示没问题,但到了linux上就出现乱码了: << ...
- 【备忘:待完善】nsq集群初体验
本机的一个节点及监控与管理后台 虚拟机中的一个节点 命令: [root@vm-vagrant nsq]# nsqd --lookupd-tcp-address=192.168.23.150:4160 ...
- Mysql中的GROUP_CONCAT使用
SELECT res.ITRId Id, res.ITRResourceName ResourceName, res.ITRSupplierName SupplierName, res.ITRDept ...
- 3、MR开发入门
1.预先准备2个文件file1.txt和file2.txt.文件内容为网页上摘下,不具有代表性,只为举例. file1.txt内容为: With this setup, whenever you ch ...