博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asm Shader Reference --- Shader Model 3.0 part
阅读量:5371 次
发布时间:2019-06-15

本文共 2892 字,大约阅读时间需要 9 分钟。

ps部分

概览

  Instruction Set                
                   
  Name Description Instruction slots Setup Arithmetic Texture Flow control New  
  绝对值 1   x        
  加法运算 1   x        
  跳出一个循环 1       x    
  通过一个比较跳出循环 3       x    
  基于一个断言跳出循环 3       x    
  调用一个子程序 2       x    
  如果一个boolean寄存器不为0的话调用一个子程序 3       x    
  如果一个predicate寄存器不为0的话调用一个子程序 3       x    
  以0为比较赋值 1   x        
  叉积 2   x        
  为采样器声明贴图维数 0 x          
  声明输入输出寄存器 0 x       x  
  定义常量 0 x          
  定义一个 Boolean 常量 0 x          
  定义一个integer 常量 0 x          
  2D 点积之后加法运算 2   x        
  3D 点积 1   x        
  4D 点积 1   x        
  改变x方向的比率 2   x        
  改变y方向的比率 2   x        
  else块 1       x    
  if结束 1       x    
  结束loop 2       x x  
  结束repeat 2       x    
  全精度计算2的幂 1   x        
  小数部分 1   x        
  if块 3       x    
  比较形式的if 3       x    
  断言形式的if 3       x    
  标签 0       x    
  全精度计算log(x) 1   x        
  循环 3       x x  
  线性插值 2   x        
  3x2 乘法 2   x        
  3x3 乘法 3   x        
  3x4 乘法 4   x        
  4x3 乘法 3   x        
  4x4 乘法 4   x        
  乘法之后加法运算 1   x        
  最大值 1   x        
  最小值 1   x        
  赋值 1   x        
  乘法 1   x        
  无运算 1   x        
  单位化 3   x        
  幂运算 3   x        
  版本 0 x          
  倒数 1   x        
  循环 3       x    
  对主函数或子程序做return处理 1       x    
  平方根的倒数 1   x        
  设置断言寄存器 1       x    
  Sin和cos 8   x        
  减法运算 1   x        
  中断像素渲染 2     x      
  采样一个贴图 See note 1     x      
  根据w部分进行对贴图的level-of-detail bias采样 6     x      
  根据来自w通道的level-of-detail来采样图片 See note 2     x   x  
  用户提供一个剃度值来采样贴图 3     x      
  根据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  
  绝对值 1   x        
  加法运算 1   x        
  跳出一个循环 - vs...endloop - vs 或者 rep...endrep 块 1       x    
  通过一个比较跳出循环 - vs...endloop - vs or rep...endrep block, with a comparison 3       x    
  跳出一个循环 - vs...endloop - vs 或 rep...endrep 块, 基于一个断言 3       x    
  调用一个子程序 2       x    
  如果一个boolean寄存器不为0的话调用一个子程序 3       x    
  如果一个predicate寄存器不为0的话调用一个子程序 3       x    
  叉积 2   x        
  为采样器声明贴图维数 0 x          
  为采样器声明贴图维数 0 x       x  
  定义常量 0 x          
  定义一个 Boolean 常量 0 x          
  定义一个integer 常量 0 x          
  3D 点积 1   x        
  4D 点积 1   x        
  计算距离向量 1   x        
  1       x    
  结束if - vs...else - vs block 1       x    
  2       x    
  结束 repeat 块 2       x    
  全精度计算2的幂 1   x        
  半精度计算2的幂 1   x        
  小数部分 1   x        
  3       x    
  3       x    
  3       x    
  标签 0       x    
  局部光照计算 3   x        
  全精度计算log(x) 1   x        
  半精度计算log(x) 1   x        
  循环 3       x    
  线性插值 2   x        
  3x2 乘法 2   x        
  3x3 乘法 3   x        
  3x4 乘法 4   x        
  4x3 乘法 3   x        
  4x4 乘法 4   x        
  乘法之后加法运算 1   x        
  最大值 1   x        
  最小值 1   x        
  赋值 1   x        
  从浮点寄存器到地址寄存器(a0)移动数据  1   x        
  乘法 1   x        
  无运算 1   x        
  单位化 3   x        
  幂运算 3   x        
  倒数 1   x        
  循环 3       x    
  对主函数或子程序做return处理 1       x    
  平方根的倒数 1   x        
  设置断言寄存器 1       x    
  大于等于比较 1   x        
  返回符号 3   x        
  Sin和cos 8   x        
  小于比较 1   x        
  减法 1   x        
  根据用户可调level-of-detail载入贴图 See note 1     x   x  
  版本 0 x          
                   

 

 

 

 

 ---wolf96  2017/1/3

 

转载于:https://www.cnblogs.com/zhanlang96/p/6246898.html

你可能感兴趣的文章
c# 对SOAP返回XML字符串的解析方法
查看>>
线程Thread
查看>>
最长公共子串_暴力解法(不会正解)36行
查看>>
摆棋子
查看>>
冲刺二------个人任务
查看>>
[HIve - LanguageManual] Joins
查看>>
unity里的c#
查看>>
UMLl类图实例
查看>>
java随机汉字生成
查看>>
Win7 “Bluetooth设置”对话框无法打开,及无法查找到设备
查看>>
"Coding Interview Guide" -- 在行列都排好序的矩阵中找数
查看>>
Maven与Antx(整理)
查看>>
洛谷P1082同余方程
查看>>
CSS中怎么让DIV居中
查看>>
windows配置jenkins编码
查看>>
关于服务器程序运行中收到SIGPIPE(转)
查看>>
npm 安装Vue环境时报错
查看>>
[jQuery插件]Pause 暂停
查看>>
CegoAdm 1.4.0 发布,Cego 管理工具
查看>>
LeetCode 327.Count of Range Sum
查看>>