Vulkan

> ch05-01

这是<<shaders for game programmers and artists>> 第五章中第一个shader例子--RTT。。一直没弄出结果,今天记下来,主要是操作步骤,详细情况可以看该书

RTT主要是将场景绘制到一个临时纹理对象上,这个临时纹理对象被成为render target

使用的例子是ch05中的shader_1.rfx

1.打开workspace,右击Effect node 添加一个新的render target  :右击---Add Texture---Add renderable texture

这里添加一个 renderTexture,类似于添加一个新的纹理,但又不同:它不是从文件读取,而且是由rendermonkey自动管理的


2.双击这个添加的render Texture ,勾上 use view port dimensions


3.现在有了一个render texture ,你需要告诉rendermonkey 去使用它:

给每个Pass 添加一个render target:右击Pass---Add render target----选择你刚才新建的哪个render texture的名称


4.双击第一个pass添加的render target,   跳出的对话框中勾上 enable color clear 和enable depth clear

双击第二个pass添加的render target,   跳出的对话框中取消 enable color clear 和enable depth clear

因为第一个绘制时候需要清空颜色和深度缓存,而第二个pass中需要接收第一个pass产生的像素,第二个不要清空


5.现在屏幕是黑屏,因为你把object都绘制到了rendertarget上,(你可以右击一个renderTarget ,选择render to screen就能看到刚才绘制的object  )

现在需要绘制一个四边形,来接收render target上绘制的object   , 这里有一个纹理坐标误差,原因请看书上,该误差为纹理坐标系中(1/width, 1/height)


6.给Effect添加一个model: screenAlighedQuad.3ds


7.添加一个pass来绘制这个quad , 将pass 中model 节点指向screenAlighedQuad.3ds


8.set up the stream mapping reference to use the coommon stream mapping node 


9.创建一个 texture object ,它用来将接收render target纹理,然后将该texture object贴图到screenAlighedQuad.3ds上


10.添加两个内置变量 viewport_inv_width和 viewport_inv_heith ,分别关联到语义:ViewportWidthInverse和 ViewportHeightInverse

这两个变量用来进行纹理坐标偏移。



11修改shader code,注意vertex  shader中的纹理坐标设置 对绘制结果有很大的影响。


到这里发现前面没有出现绘制结果的原因了:

1.screenAlighedQuad.3ds模型绘制时候的视角问题,默认情况下,看到的不是 quad的正面,而是它的侧面,(假如面有厚度的话,看到的是一条线,但是没有厚度,所以什么也看不到),这里需要注意面模型绘制到屏幕上时候的坐标。书中out position =float4(in.xy, 0, 1),1.82版本应该为out position =float4(in.yx, 0, 1),难以理解到底是什么原因..版本问题?模型问题?。。

我擦,不是上面说的原因,找到真正原因了,是CULL MODE的问题,把screenAlighedQuad.3ds这个pass的CULL MODE改为none,两面都绘制,就不用position =float4(in.yx, 0, 1)。。应该是1.5到1.82版本时,CULL的默认值被改了。。。

2.vertex shader中将该quad绘制到屏幕时候,不需要进行试图矩阵变换,因为是将该quad完整的平铺到屏幕上,这里没注意


3.注意render Target的属性,双击它保证第一个pass的depth buffer和color buffer被clear , 而第二个pass需要接收第一个pass的depth和color所以不需要被clear.!切记!!!



posted on 2013-07-30 10:48  Vulkan  阅读(153)  评论(0编辑  收藏  举报

导航