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 ...
随机推荐
- 批量归一化batch_normalization
为了解决在深度神经网络训练初期降低梯度消失/爆炸问题,Sergey loffe和Christian Szegedy提出了使用批量归一化的技术的方案,该技术包括在每一层激活函数之前在模型里加一个操作,简 ...
- C#/.NET 中的契约
将文档放到代码里面,文档才会及时地更新! 微软从 .NET Framework 4.0 开始,增加了 System.Diagnostics.Contracts 命名空间,用来把契约文档融入代码.然而后 ...
- Prism patterns & practices Developer Center
Prism https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff648465(v=pandp.10) Prism provides ...
- 《DSP using MATLAB》示例Example7.7
Type-4 Linear-Phase FIR filter 代码: h = [-4, 1, -1, -2, 5, 6, -6, -5, 2, 1, -1, 4]; M = length(h); n ...
- MAMP环境配置
命令行: 开启apache服务:sudo apachectl start 停止apache服务:sudo apachectl stop 重启服务:sudo apachectl restart 查看版本 ...
- SpringMvc的上传和下载
第一步:配置文件加入上传和下载的<bean>全部配置文件参考上上篇博文 <!-- 配置springMVC上传文件和下载文件 --> <bean id="mult ...
- 使用 Excel 可以很方便的做程序原型
使用 Excel 可以很方便的做程序原型 比如计算 单片机的端口模式,可以使用 Excel 很方便的计算出来,花了 15 分钟做好. 还可以使用函数自动根据二进制计算出 十六进制. 然后如果再使用软件 ...
- 理想中的 PCB 文件格式
理想中的 PCB 文件格式 因为平时写代码使用 git,在画 PCB 也使用 git 来管理 PCB 文件. 但是 PCB 文件是二进制的,所以在比较时非常麻烦. 虽然 PCB 文件可以导出 文本文件 ...
- jieba分词初学
昨天,做的那个数据分析报告用到了jieba分词.但是只是借用了别人的部分代码.具体函数代表什么还不太明白.今天去官网研究了下..... jieba官网简介 "结巴"中文分词:做最好 ...
- 洛谷 4525 && 洛谷 4526 【模板】自适应辛普森法
题目:https://www.luogu.org/problemnew/show/P4525 https://www.luogu.org/problemnew/show/P4526 参考:https: ...