http://blog.sina.com.cn/s/blog_6e521a600100q4dr.html

DX9还是能支持到固定管线的,虽然说是在内部被转换成shader;

DX10明确不再支持固定管线了,也就是在API上已经没有一些固定管线的接口;
DX11也已经出来好久了,只不过amazon上到现在也没有相关的书籍介绍;
 
以后的PC engine,固定管线是不用考虑了,不会回到过去。当然,如果准备的是有手机版之类的,还是有用的。
 
Shader Model 和 DirectX 的关系:
 
DirectX 8.0 - Shader Model 1.0 & 1.1
DirectX 8.0a - Shader Model 1.3
DirectX 8.1 - Shader Model 1.4
DirectX 9.0 - Shader Model 2.0
DirectX 9.0a - Shader Model 2.0a
DirectX 9.0b - Shader Model 2.0b
DirectX 9.0c - Shader Model 3.0
DirectX 10.0* - Shader Model 4.0
DirectX 10.1* - Shader Model 4.1
DirectX 11.0* - Shader Model 5.0
 
*DirectX 10.0 and higher will not run in Windows XP
 
 
ShaderX serials是wolfgang的一系列书:
ShaderX1 到 ShaderX6都是基于shader model 3.0和2.0的。
ShaderX7 中有章节基于Shader model 4.0。
 
对应于各个版本的asm指令和各个寄存器,微软的MSDN有相关的文档:
http://msdn.microsoft.com/en-us/library/bb172930(v=vs.85).aspx (如失效,请用vs_3_0做关键字google)
 

vs_3_0

0 out of 3 rated this helpful - Rate this topic
 

A programmable vertex shader is made up of a set of instructions that operate on vertex data. Registers transfer data in and out of the ALU. Additional control can be applied to modify the instruction, the results, or what data gets written out.

Vertex shader version vs_3_0 extends the feature set supported by vs_2_x. Each of the features in vs_2_X that requires a cap to be set, is available in vs_3_0 without requiring the cap.

New Features

New features of vertex shader version vs_3_0 are listed in the following sections.

Indexing Registers

In the earlier shader models, only the constant register bank could be indexed. In this model, the following register banks can be indexed, using the loop counter register (aL):

  • Input register (v#)
  • Output register (o#)

Vertex Textures

This shader model supports texture lookup in the vertex shader using texldl. The vertex engine has four texture sampler stages (distinct from the displacement map sampler and the texture samplers in the pixel engine) that can be used to sample textures set at those stages. See Vertex Textures in vs_3_0 (DirectX HLSL).

Vertex Stream Frequency

This feature allows a subset of the input registers to be initialized at a rate different from once per vertex. See Drawing Non-Indexed Geometry.

Shader Output

Similar to vs_2_0, the output of the shader can vary with static flow control. Be careful with dynamic branching as this can cause shader outputs to vary per vertex. This will produce unpredictable results on different hardware.

Dynamic flow control

All dynamic flow control instructions are supported. The maximum nesting depth value allowed is 24. (See Flow Control Nesting Limits for details.)

Temporary Registers

A total of 32 temporary registers (r#) is supported.

Static Flow Control

The maximum nesting depth for loop - vs/rep - vs is 4. The maximum nesting depth for call - vs/callnz bool - vs/callnz pred - vs is 4. For if bool - vs, the maximum nesting depth value allowed is 24. (See Flow Control Nesting Limits for details.)

Predication

Instruction predication is supported. Use setp_comp - vs to set the predicate register.

Instruction Count

Each vertex shader is allowed anywhere from 512 up to the number of slots in MaxVertexShader30InstructionSlots in D3DCAPS9. The number of instructions run can be much higher because of the loop/rep support; however, this is capped by MaxVShaderInstructionsExecuted in D3DCAPS9 which should be at least 0xFFFF.

Device Caps

If Vertex Shader 3_0 is supported, the following caps are supported in hardware (at a minimum):

Cap Capability
Shader caps
  • DynamicFlowControlDepth is 24
  • NumTemps is 32
  • StaticFlowControlDepth is 4
  • Predication is supported.
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom 8K
VertexShaderVersion 3_0
MaxVertexShaderConst 256
MaxVertexShader30InstructionSlots 512
Fog support D3DPRASTERCAPS_FOGVERTEX
VertexTextureFilterCaps
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET Vertex elements in a vertex declaration can share the same stream offset.
Vertex formats
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

Shader Model 版本与DirectX的关系(OpenGL对应的呢?)的更多相关文章

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

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

  3. Unified shader model

    https://en.wikipedia.org/wiki/Unified_shader_model In the field of 3D computer graphics, the Unified ...

  4. OpenStack调研:OpenStack是什么、版本演变、组件关系(Havana)、同类产品及个人感想

    一点调研资料,比较浅,只是觉得部分内容比较有用,记在这里: 首先,关于云计算,要理解什么是SAAS.PAAS.IAAS,这里不述:关于虚拟化,需要知道什么是Hypervisor,这里也不述: Open ...

  5. git工作区、暂存区、版本库之间的关系

    区分三者关系 Git最让你迷惑的无非是它里面的各种概念了,如果是刚开始接触Git希望看完本篇介绍之后有一个清晰的认识,笔者认识也有限这里只说说个人对使用Git的感受,说一下它里面的几个最常用的概念的理 ...

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

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

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

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

  8. Django model 表与表的关系

    一对多:models.ForeignKey(其他表) 多对多:models.ManyToManyField(其他表) 一对一:models.OneToOneField(其他表) 应用场景: 一对多:当 ...

  9. Spring Cloud与Spring Boot版本匹之间的关系

    由于学习的起步较晚,创建项目的时候一直采用的都是较新的springboot,用的2.0.2.RELEASE版本.参照网上的示例进行实验的时候,有时候会才坑,特记录一二以备忘 首先就是SpringBoo ...

随机推荐

  1. easyfinding(codevs 3280)

    3280 easyfinding  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 给一个M 行N  列 ...

  2. linux常见问题集锦-1

    http://www.cnblogs.com/itech/archive/2011/02/12/1952857.html 感谢作者分享 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 . ...

  3. linux 小喇叭 没了

    Waiting for sound system to respond 方法: # pulseaudio --start -D W: main.c: This program is not inten ...

  4. grep -n 显示行号

    [root@86 ~]# grep -n "StartDiscoverers" /usr/local/zabbix/etc/zabbix_server.conf 176:### O ...

  5. django默认开事务的麻烦事

    最近DBA发现总是有大事务报警,最终排查到是因为django默认在查询之前执行了 set autocommit=0 原来,mysql如果开了set autocommit=0,那么所有的语句一定是在一个 ...

  6. Java Hour 12 Generic

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 本文作者Java 现经验约为12 Hour,请各位不吝赐教. 泛型程序设计 为 ...

  7. Sql server之路 (一)基础学习

    查询 1.Select * from表名 2.Select 字段1,字段2,from表名 3.Select 字段1,字段2,...from表名 where 字段1 in('内容') 插入 1.inse ...

  8. androidSDK也要配置环境变量(转)

    android的开发人员来说,首先要做的就是环境变量的配置.java是需要配置环境变量的.当然,安卓的环境变量需要我们配置adb的使用,将开发平台的两个工具包配置到环境变量里. 工具/原料 andro ...

  9. android ndk环境配置(转)

    转载自:http://jingyan.baidu.com/article/3ea51489e7a9bd52e61bbac7.html android sdk 更新到 r23 时,eclipse 自带 ...

  10. XMLSAX解析

    * HTML不区分大小写,XML区分大小写 * 用浏览器打开xml文件,判断xml文件是否有错 * xml与html的区别 1:xml的标记可以自定义,但是html标记不可以定义.<studen ...