Asm Shader Reference --- Shader Model 3.0 part
ps部分
概览
| Instruction Set | |||||||||
| Name | Description | Instruction slots | Setup | Arithmetic | Texture | Flow control | New | ||
| abs - ps | 绝对值 | 1 | x | ||||||
| add - ps | 加法运算 | 1 | x | ||||||
| break - ps | 跳出一个循环 | 1 | x | ||||||
| break_comp - ps | 通过一个比较跳出循环 | 3 | x | ||||||
| breakp - ps | 基于一个断言跳出循环 | 3 | x | ||||||
| call - ps | 调用一个子程序 | 2 | x | ||||||
| callnz bool - ps | 如果一个boolean寄存器不为0的话调用一个子程序 | 3 | x | ||||||
| callnz pred - ps | 如果一个predicate寄存器不为0的话调用一个子程序 | 3 | x | ||||||
| cmp - ps | 以0为比较赋值 | 1 | x | ||||||
| crs - ps | 叉积 | 2 | x | ||||||
| dcl_samplerType (sm2, sm3 - ps asm) | 为采样器声明贴图维数 | 0 | x | ||||||
| dcl_semantics (sm3 - ps asm) | 声明输入输出寄存器 | 0 | x | x | |||||
| def - ps | 定义常量 | 0 | x | ||||||
| defb - ps | 定义一个 Boolean 常量 | 0 | x | ||||||
| defi - ps | 定义一个integer 常量 | 0 | x | ||||||
| dp2add - ps | 2D 点积之后加法运算 | 2 | x | ||||||
| dp3 - ps | 3D 点积 | 1 | x | ||||||
| dp4 - ps | 4D 点积 | 1 | x | ||||||
| dsx - ps | 改变x方向的比率 | 2 | x | ||||||
| dsy - ps | 改变y方向的比率 | 2 | x | ||||||
| else - ps | else块 | 1 | x | ||||||
| endif - ps | if结束 | 1 | x | ||||||
| endloop - ps | 结束loop | 2 | x | x | |||||
| endrep - ps | 结束repeat | 2 | x | ||||||
| exp - ps | 全精度计算2的幂 | 1 | x | ||||||
| frc - ps | 小数部分 | 1 | x | ||||||
| if bool - ps | if块 | 3 | x | ||||||
| if_comp - ps | 比较形式的if | 3 | x | ||||||
| if pred - ps | 断言形式的if | 3 | x | ||||||
| label - ps | 标签 | 0 | x | ||||||
| log - ps | 全精度计算log₂(x) | 1 | x | ||||||
| loop - ps | 循环 | 3 | x | x | |||||
| lrp - ps | 线性插值 | 2 | x | ||||||
| m3x2 - ps | 3x2 乘法 | 2 | x | ||||||
| m3x3 - ps | 3x3 乘法 | 3 | x | ||||||
| m3x4 - ps | 3x4 乘法 | 4 | x | ||||||
| m4x3 - ps | 4x3 乘法 | 3 | x | ||||||
| m4x4 - ps | 4x4 乘法 | 4 | x | ||||||
| mad - ps | 乘法之后加法运算 | 1 | x | ||||||
| max - ps | 最大值 | 1 | x | ||||||
| min - ps | 最小值 | 1 | x | ||||||
| mov - ps | 赋值 | 1 | x | ||||||
| mul - ps | 乘法 | 1 | x | ||||||
| nop - ps | 无运算 | 1 | x | ||||||
| nrm - ps | 单位化 | 3 | x | ||||||
| pow - ps | 幂运算 | 3 | x | ||||||
| ps | 版本 | 0 | x | ||||||
| rcp - ps | 倒数 | 1 | x | ||||||
| rep - ps | 循环 | 3 | x | ||||||
| ret - ps | 对主函数或子程序做return处理 | 1 | x | ||||||
| rsq - ps | 平方根的倒数 | 1 | x | ||||||
| setp_comp | 设置断言寄存器 | 1 | x | ||||||
| sincos - ps | Sin和cos | 8 | x | ||||||
| sub - ps | 减法运算 | 1 | x | ||||||
| texkill - ps | 中断像素渲染 | 2 | x | ||||||
| texld - ps_2_0 and up | 采样一个贴图 | See note 1 | x | ||||||
| texldb - ps | 根据w部分进行对贴图的level-of-detail bias采样 | 6 | x | ||||||
| texldl - ps | 根据来自w通道的level-of-detail来采样图片 | See note 2 | x | x | |||||
| texldd - ps | 用户提供一个剃度值来采样贴图 | 3 | x | ||||||
| texldp - ps | 根据w部分进行对贴图的投影划分采样 | See note 3 | x | ||||||
部分函数细节
dcl_semantics (sm3 - ps asm)
语法
dcl_semantics [_centroid] dst[.write_mask]
示例
ps_3_0
; Declaring inputs
dcl_normal v0.xyz
dcl_blendweight v0.w ; Must be same reg# as normal,matching vshader packing
dcl_texcoord1 v1.y ; Mask can be any subset of mask from vshader semantic
dcl_texcoord0 v1.zw; Has to be same reg# as texcoord1, to match vshader
; Declaring samplers
dcl_2d s0
dcl_2d s1
def c0, 0, 0, 0, 0
mov r0.x, v1.y ; texcoord1
mov r0.y, c0
texld r0, r0, s0
texld r1, v1.zw, s1
...
(output regs in ps_3_0 are same as ps_2_0: oC0-oC3,oDepth)
texldl - ps
语法
texldl dst, src0, src1
用于mipmap处理
算法
在mipmap滤波方式为linear时
LOD = src0.w + LODBIAS;
if (LOD <= 0 )
{
LOD = 0;
Filter =MagFilter;
tex = Lookup(MAX(MAXMIPLEVEL, LOD), Filter );
}
else
{
Filter =MinFilter;
LOD = MAX(MAXMIPLEVEL, LOD );
tex = Lookup(Floor(LOD), Filter );
if( MipFilter ==LINEAR )
{
tex1 =Lookup( Ceil(LOD), Filter );
tex = (1 -frac(src0.w))*tex + frac(src0.w)*tex1;
}
}
vs部分
概览
| Instruction Set | |||||||||
| Name | Description | Instruction slots | Setup | Arithmetic | Texture | Flow control | New | ||
| abs - vs | 绝对值 | 1 | x | ||||||
| add - vs | 加法运算 | 1 | x | ||||||
| break - vs | 跳出一个循环 - vs...endloop - vs 或者 rep...endrep 块 | 1 | x | ||||||
| break_comp - vs | 通过一个比较跳出循环 - vs...endloop - vs or rep...endrep block, with a comparison | 3 | x | ||||||
| breakp - vs | 跳出一个循环 - vs...endloop - vs 或 rep...endrep 块, 基于一个断言 | 3 | x | ||||||
| call - vs | 调用一个子程序 | 2 | x | ||||||
| callnz bool - vs | 如果一个boolean寄存器不为0的话调用一个子程序 | 3 | x | ||||||
| callnz pred - vs | 如果一个predicate寄存器不为0的话调用一个子程序 | 3 | x | ||||||
| crs - vs | 叉积 | 2 | x | ||||||
| dcl_usage input (sm1, sm2, sm3 - vs asm) | 为采样器声明贴图维数 | 0 | x | ||||||
| dcl_samplerType (sm3 - vs asm) | 为采样器声明贴图维数 | 0 | x | x | |||||
| def - vs | 定义常量 | 0 | x | ||||||
| defb - vs | 定义一个 Boolean 常量 | 0 | x | ||||||
| defi - vs | 定义一个integer 常量 | 0 | x | ||||||
| dp3 - vs | 3D 点积 | 1 | x | ||||||
| dp4 - vs | 4D 点积 | 1 | x | ||||||
| dst - vs | 计算距离向量 | 1 | x | ||||||
| else - vs | Begin an else block | 1 | x | ||||||
| endif - vs | 结束if - vs...else - vs block | 1 | x | ||||||
| endloop - vs | 结束循环 - vs block | 2 | x | ||||||
| endrep - vs | 结束 repeat 块 | 2 | x | ||||||
| exp - vs | 全精度计算2的幂 | 1 | x | ||||||
| exp - vs | 半精度计算2的幂 | 1 | x | ||||||
| frc - vs | 小数部分 | 1 | x | ||||||
| if bool - vs | Begin an if bool - vs block (using a Boolean condition) | 3 | x | ||||||
| if_comp - vs | Begin an if bool - vs block, with a comparison | 3 | x | ||||||
| if pred - vs | Begin an if bool - vs block with a predicate condition | 3 | x | ||||||
| label - vs | 标签 | 0 | x | ||||||
| lit - vs | 局部光照计算 | 3 | x | ||||||
| log - vs | 全精度计算log₂(x) | 1 | x | ||||||
| logp - vs | 半精度计算log₂(x) | 1 | x | ||||||
| loop - vs | 循环 | 3 | x | ||||||
| lrp - vs | 线性插值 | 2 | x | ||||||
| m3x2 - vs | 3x2 乘法 | 2 | x | ||||||
| m3x3 - vs | 3x3 乘法 | 3 | x | ||||||
| m3x4 - vs | 3x4 乘法 | 4 | x | ||||||
| m4x3 - vs | 4x3 乘法 | 3 | x | ||||||
| m4x4 - vs | 4x4 乘法 | 4 | x | ||||||
| mad - vs | 乘法之后加法运算 | 1 | x | ||||||
| max - vs | 最大值 | 1 | x | ||||||
| min - vs | 最小值 | 1 | x | ||||||
| mov - vs | 赋值 | 1 | x | ||||||
| mova - vs | 从浮点寄存器到地址寄存器(a0)移动数据 | 1 | x | ||||||
| mul - vs | 乘法 | 1 | x | ||||||
| nop - vs | 无运算 | 1 | x | ||||||
| nrm - vs | 单位化 | 3 | x | ||||||
| pow - vs | 幂运算 | 3 | x | ||||||
| rcp - vs | 倒数 | 1 | x | ||||||
| rep - vs | 循环 | 3 | x | ||||||
| ret - vs | 对主函数或子程序做return处理 | 1 | x | ||||||
| rsq - vs | 平方根的倒数 | 1 | x | ||||||
| setp_comp - vs | 设置断言寄存器 | 1 | x | ||||||
| sge - vs | 大于等于比较 | 1 | x | ||||||
| sgn - vs | 返回符号 | 3 | x | ||||||
| sincos - vs | Sin和cos | 8 | x | ||||||
| slt - vs | 小于比较 | 1 | x | ||||||
| sub - vs | 减法 | 1 | x | ||||||
| texldl - vs | 根据用户可调level-of-detail载入贴图 | See note 1 | x | x | |||||
| vs | 版本 | 0 | x | ||||||
---wolf96 2017/1/3
Asm Shader Reference --- Shader Model 3.0 part的更多相关文章
- Asm Shader Reference --- Shader Model 2.0 part
ps部分 ps_2_0 概览 Instruction Set Name Description Instruction slot ...
- Asm Shader Reference --- Shader Model 2.x part
ps部分 概览 Instruction Set Name Description Instruction slots S ...
- Asm Shader Reference --- Shader Model 1 part
ps部分 ps_1_1,ps_1_2,ps_1_3,ps_1_4 总览 Instruction Set ...
- 微软的HLSL Shader Model 6.0 compiler要转向LLVM了,开源的节奏. Apple/Khronos都有各自计划
So, Microsoft is making an opensource HLSL-to-almost-LLVM compiler, and Khronos is making an opensou ...
- Shader Model 3.0:Using Vertex Textures SM3:使用顶点纹理 (NVIDIA spec, 6800支持使用D3DFMT_R32F and D3DFMT_A32B32G32R32F的纹理格式实现Vertex Texture。)
翻译者 周波 zhoubo22@hotmail.com 版权所有 Philipp Gerasimov Randima (Randy) Fernando Simon Green NVIDIA Corpo ...
- Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)
关于光照模型 所谓模型,一般是由学术算法发起, 经过大量实际数据验证而成的可靠公式 现在还记得2009年做TD-SCDMA移动通信算法的时候,曾经看过自由空间传播模型(Free space propa ...
- ePass1000 Full ActiveX Control Reference Manual Version 2.0
ePass1000 Full ActiveX Control Reference Manual Version 2.0 Error Code Value Return Status Descripti ...
- caffe编译时候出现 undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'
1.编译时候出现 make: * [.build_release/examples/siamese/convert_mnist_siamese_data.bin] Error 1 /usr/local ...
- Create a Basic Shader in Shader Forge
[Create a Basic Shader in Shader Forge] 1.打开ShaderForge.Window-> Shader Forge.(打开速度较慢) 2.通过NewSha ...
随机推荐
- JS验证用户真实姓名
发布:thebaby 来源:脚本学堂 [大 中 小] 本文分享下,使用js代码验证用户真实姓名的方法,有需要的朋友不妨参考下,希望对你有一定的帮助. 原文地址:http://www.jbx ...
- LBS地理位置距离计算方法之geohash算法
随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆.银行.妹纸等等).基础数据中,一般保存了目标位置的经纬度:利用用户提供的经纬度,进行对比,从而获得是否在附近.这里需要在设置出一个字段, ...
- jquery点击其他地方隐藏div层的实现程序
js代码 $(document).ready(function() { //语言头部的点击事件,显示语言列表 $(".language_selected").click(funct ...
- VC++2010添加菜单
1 资源视图下面右键添加资源 选择menu 2 创建你想要的menu 3 找到CDialog::OnInitDialog();在后面添加代码. CMenu menu; menu.LoadMenu ...
- Linux是一门真正的黑客高手艺术
黑客这个词从诞生到现在,从来就没有解释为“高级入侵者”.“病毒制造者”或者“QQ盗号者”过.我至今不清楚在中国是谁先把黑客和这些无聊的词汇联系在了一起,导致如此多的人被误导.但有一点是肯定的,不负责任 ...
- 在C#中IEnumerable与IEnumerator
对于很多刚开始学习C#同学来说经常会遇到IEnumerable这个关键字,enumerate在字典里的解释是列举,枚举,因此可想而知这个关键字肯定是和列举数据有关的操作. public interfa ...
- 【springmvc Request】 springmvc请求接收参数的几种方法
通过@PathVariabl注解获取路径中传递参数 转载请注明出处:springmvc请求接收参数的几种方法 代码下载地址:http://www.zuida@ima@com/share/1751862 ...
- 素数筛&&欧拉筛
折腾了一晚上很水的数论,整个人都萌萌哒 主要看了欧拉筛和素数筛的O(n)的算法 这个比那个一长串英文名的算法的优势在于没有多次计算一个数,也就是说一个数只筛了一次,主要是在%==0之后跳出实现的,具体 ...
- 数列 COGS1048:[Citric S2] 一道防AK好题
[题目描述] Czy手上有一个长度为n的数列,第i个数为xi. 他现在想知道,对于给定的a,b,c,他要找到一个i,使得a*(i+1)*xi2+(b+1)*i*xi+(c+i)=0成立. 如果有多个i ...
- 深入研究java.lang.ProcessBuilder类
深入研究java.lang.ProcessBuilder类 一.概述 ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它 ...