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的更多相关文章

  1. Asm Shader Reference --- Shader Model 2.0 part

    ps部分 ps_2_0 概览   Instruction Set                                   Name Description Instruction slot ...

  2. Asm Shader Reference --- Shader Model 2.x part

    ps部分 概览   Instruction Set                                       Name Description Instruction slots S ...

  3. Asm Shader Reference --- Shader Model 1 part

    ps部分 ps_1_1,ps_1_2,ps_1_3,ps_1_4 总览                   Instruction Set                               ...

  4. 微软的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 ...

  5. 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 ...

  6. Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)

    关于光照模型 所谓模型,一般是由学术算法发起, 经过大量实际数据验证而成的可靠公式 现在还记得2009年做TD-SCDMA移动通信算法的时候,曾经看过自由空间传播模型(Free space propa ...

  7. ePass1000 Full ActiveX Control Reference Manual Version 2.0

    ePass1000 Full ActiveX Control Reference Manual Version 2.0 Error Code Value Return Status Descripti ...

  8. caffe编译时候出现 undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'

    1.编译时候出现 make: * [.build_release/examples/siamese/convert_mnist_siamese_data.bin] Error 1 /usr/local ...

  9. Create a Basic Shader in Shader Forge

    [Create a Basic Shader in Shader Forge] 1.打开ShaderForge.Window-> Shader Forge.(打开速度较慢) 2.通过NewSha ...

随机推荐

  1. Java Web开发之Servlet、JSP基础

    有好多年不搞Java Web开发了,这几天正好国庆放假,放松之余也有兴趣回头看看Java Web开发技术的基础. 我们都知道,Servlet是Java Web开发的重要基础,但是由于Servlet开发 ...

  2. NHibernate多对多关联映射的实现

    上次用EF演示了数据库多对多关系的操作,这次我们还是引用上次的案例,来演示如何在C#当中使用NHibernate. 首先介绍一下NHibernate框架的来源.熟悉Java编程的读者肯定知道Hiber ...

  3. Convert.ToInt32()与int.Parse()的区别 (转载)

    Convert.ToInt32()与int.Parse()的区别(1)这两个方法的最大不同是它们对null值的处理:Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Pa ...

  4. 解决laravel中环境配置不起作用的方法

    博客已经迁移到www.imyzf.com,本站不再更新,请谅解! laravel有个环境配置选项很好用,在bootstrap/start.php中,曾经百度到这里面加入域名,就可以自动选择环境 $en ...

  5. Python学习笔记—itertools模块

    这篇是看wklken的<Python进阶-Itertools模块小结> 学习itertools模块的学习笔记 在看itertools中各函数的源代码时,刚开始还比较轻松,但后面看起来就比较 ...

  6. C++ 输入输出文件流(ifstream&ofstream)

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O, ...

  7. codeforces edu round3

    B. The Best Gift  传送门:http://codeforces.com/problemset/problem/609/B Emily's birthday is next week a ...

  8. Apache服务器部署ASP.NET网站

    资源罗列: apache如何支持asp.net 用 Apache 发布 ASP.NET 网站

  9. theano log softmax 4D

    def softmax_4d(x_4d): """ x_4d: a 4D tensor:(batch_size,channels, height, width) &quo ...

  10. Wix 安装部署(一)同MSBuild 自动生成打包文件 转

    原文地址:http://www.cnblogs.com/stoneniqiu/p/3355086.html 因为项目需要,最近在研究Wix打包部署,园子里也有一些关于wix的博客,方方面面,讲的点各不 ...