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 ...
随机推荐
- BZOJ5280: [Usaco2018 Open]Milking Order(二分+拓扑)
5280: [Usaco2018 Open]Milking Order Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 123 Solved: 62[ ...
- AngularX 指令(ngForof)(转载)
该指令用于基于可迭代对象中的每一项创建相应的模板.每个实例化模板的上下文对象继承于外部的上下文对象,其值与可迭代对象对应项的值相关联. NgForOf 指令语法 * 语法糖 <li *ngFor ...
- java分布式(一)
分布式架构的演进 初始阶段架构 应用服务和数据服务分离阶段 使用缓存改善性能 使用应用服务器集群 数据库读写分离 反向代理和CDN加速 分布式文件系统和分布式数据库 使用NoSql和搜索引擎 业务拆分 ...
- hadoop2.2使用手册2:如何运行自带wordcount
问题导读:1.hadoop2.x自带wordcount在什么位置?2.运行wordcount程序,需要做哪些准备? 此篇是在hadoop2完全分布式最新高可靠安装文档 hadoop2.X使用手册1:通 ...
- vue插件vue-infinite-loading的使用
vue-infinite-loading官网:https://peachscript.github.io/vue-infinite-loading/ 安装: npm install vue-infin ...
- ecmall挂件开发实例二(转)
下述例子讲述了快速增加挂件的方法,但对系统中的代码未做更改,基本参照image_ad挂件的方法. 第 一步: 了解首页模板结构 首页文 件结构 include hearder.html 包含的头文件, ...
- 5.Python使用最新爬虫工具requests-html
1.安装,在命令行输入:pip install requests-html,安装成功后,在Pycharm引入即可. 2.代码如下所示: from requests_html import HTMLSe ...
- Python nltk English Detection
http://blog.alejandronolla.com/2013/05/15/detecting-text-language-with-python-and-nltk/ >>> ...
- Unit05: 实战技巧 、 资费列表 、 拦截器
Unit05: 过滤器解决表单写中文乱码.拦截器 1. 使用过滤器解决表单中文参数值乱码问题 注意: a. 表单提交方式必须为POST. b. 过滤器的编码应该与浏览器端设置的编码一致. 2. 拦截器 ...
- Asp.net中的web.config配置文件(转)
最近开始学习.NET的开发,首先碰到的就是web.config的配置问题,把网上大虾的资料转发记录一下,以备不时之需. 原贴路径如下:http://blog.csdn.net/hbqhdlc/arti ...