摘要: 我们跟Using the Alpha Channel进行一下对比: 1. Using Alpha Channel这个例子中,物体的深度直接在物体绘制的Vertex Shader中计算出来,然后route到Pixel Shader中,再在Pixel Shader利用景深计算公式(公式自变量就是深度)1 float Blur = max(clamp(0,1, 1 - (Depth-Near_Dist)/Near_Range),2 clamp(0,1,(Depth-(Far_Dist-Far_Range))/Far_Range)); 再进一步将Blu... 阅读全文
posted @ 2013-07-18 21:38 infinityward 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 该方法将物体绘制到RT时,和上一例子(depth imposter)仅有一个细微的差别,就是将W-buffer计算出来,保存到物体绘制RT的Alpha通道中,这里我们不讲解如何存储到Alpha通道,将重点放在如何根据深度计算Blur Amount 书中有一个计算Blur Amount的算法: float Blur = max(clamp(0,1, 1 - (Depth-Near_Dist)/Near_Range), clamp(0,1, (Depth-(Far_Dist-Far_Range))/Far_Range)); 当时我看了半天也没看明白这个... 阅读全文
posted @ 2013-07-17 00:24 infinityward 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 这是本书中第一个实战实例,使用的是depth imposter方法来实现的Depth of view(景深),不过这个实现方法有一个缺点,就是模糊跟清晰的过渡太过明显,很容易就能看出来有一个分割平面将物体分成了模糊与清晰的两部分(书中截图不是很清晰,我多截了几张比较清晰的分割面)。 关于算法上边,没有什么好说的,要说的就是ImposterFar Pass和ImposterNear Pass中的State Block设置时应该注意的问题。在这个实例中,我们用到了三个可渲染纹理(Renderable Texture,下文简称RT),其中一个用于物体渲染(即Render Target),另外两个.. 阅读全文
posted @ 2013-07-16 23:51 infinityward 阅读(259) 评论(1) 推荐(0) 编辑
摘要: 本章主要目标讲的是过滤与模糊,要用到的一个比较常见的功能就是Render to texture。 RenderMonkey中直接可以添加可渲染纹理,我们要做的就是完成如何渲染到纹理的代码。 书中有一段代码如下: 1 float4x4 view_proj_matrix; 2 float viewport_inv_width; 3 float viewport_inv_height; 4 struct VS_OUTPUT 5 { 6 float4 Pos: POSITION; 7 float2 texCoord: TEXCOORD0; 8 }; 9 VS_OUTPUT vs_main(floa.. 阅读全文
posted @ 2013-06-28 16:48 infinityward 阅读(3346) 评论(13) 推荐(0) 编辑
摘要: 很久以前读过龙书第一版,突然闲来无事,心血来潮,想读读第二版试试。 读了之后才发现,第二版比第一版所加了不少新内容,并不像我想象的只是第一版的fix function pipeline改成programmable pipeline。 这本书总体质量还是非常不错的,推荐新手直接阅读第二版(第一版不要再读了,fix function pipeline已经在DX10和DX11中完全摒弃了,如果出于兴趣想了解,可以读读)。 之前的数学基础部分就不说了,读书的时候请注意对照勘误表!!要不然书中的印刷错误或者录入错误,让我们直接当成对的用了,会发现有几个公式根本推导不下来,容易产生挫败感。我在读2D... 阅读全文
posted @ 2013-06-23 10:45 infinityward 阅读(438) 评论(1) 推荐(0) 编辑