色带的渲染不知道是不是可以采用pixel shader的方法。参考下《Learn.Vertex.And.Pixel.Shader.Programming.With.Directx.9.-.2004.-.(By.Laxxuss)》
P202 pixel shader里的寄存器:
(c1....c223):ps1.1只有c1...c8。存只读的单精度浮点数。
(b1...b16):只读的布尔值 ps2.0之后才有
(i0..i15)
aL :用于循环
p0 :谓词???????
......
此书类似辞典,对一个个指令进行详细解释,其实跟sdk文档差不多。换书。
《Real-time.Rendering.Tricks.and.Techniques.in.DirectX》
P329
Texture stage color operations提供了一定的方法来实现纹理混合,而ps有更大的自由度。ps渲染只是对于要渲染的primitive而言,而不是整个屏幕。ps最大的好处是简化了纹理混合的操作,而Texture stage states需要设置纹理操作,纹理参数,混合因子等;ps用自定义的运算操作替代了SetTextureStageState的调用。
Texture stage status: 定义了设备如何处理纹理,以及纹理如何与其他stage的纹理交互,如何与vertex交互。texture 可以最多设置8个stage
---------------------------------
设置一个stage status进行的操作
----------------------------
多个stage
~~~~~~~~~~~~~~~~~~~6月5日~~~~~~~~~~~~~~~~~
----------------
vertex shader可以实现morph blending.pixel shader可以实现texture blending。地表的流动光线可能是光照贴图和原纹理进行texture blending.
----------------
P346 一个简单的pixel shader实例:一个表面,
(1)有纹理
(2)被方向光所照射(平面``顶点法向量与光线的角都是一定的,有意义???);
(3)纹理的alpha通道
这三个数据来源给pixel shader作为输入来渲染。有per-pixel lighting的效果。
代码摘录
tex t0 //读纹理
mad r0, v1, t0.a, v0 //v1角度值,t0.a a通道值 v0 环境光 r0 临时变量
mul r0, r0, t0 //反射光*纹理