龙书D3D11章节习题答案(第九章)

原创 2016年06月06日 19:59:36

以下答案仅供参考,有错欢迎留言。


Chapter 9 : Blending


1. Modify the “Transparent Water” demo by using the following line before drawing the water:

md3dImmediateContext->OMSetBlendState(TransparentBS, blendFactors, 0xfffffffe);

This turns off the first bit which disables the first sample. Because we are not using multisampling (which is like using multisampling with one sample), this prevents the water pixels from being drawn.


在创建交换链时,程序中mEnable4xMsaa默认为false,不使用多重采样,采样器Count = 1。

	// Use 4X MSAA? 
	if( mEnable4xMsaa )
	{
		sd.SampleDesc.Count   = 4;
		sd.SampleDesc.Quality = m4xMsaaQuality-1;
	}
	// No MSAA
	else
	{
		sd.SampleDesc.Count   = 1;
		sd.SampleDesc.Quality = 0;
	}
Blend Demo中的mEnable4xMsaa值为false,默认不使用多重采样,故采样器只有1个,由OMSetBlendState的第三个参数UINT SampleMask的第1位控制采样器开关,第1位取0以后即表示不绘制。

	md3dImmediateContext->OMSetBlendState(RenderStates::TransparentBS, blendFactor, 0x00000000); //同0xfffffffe




2. Experiment with different blend operations and blend factor combinations.

略。




3. Modify the “Blend” demo by drawing the water first. Explain the results.


原先的绘制顺序是Box-->Hills-->Waves


修改为Waves-->Box-->Hills:


原因是开启了深度测试以后,后绘制的对象会遮盖到先绘制的对象,当最先绘制Waves以后,在相同的坐标上,Waves像素点的深度值大于Box和Hills,所以在绘制时,Waves的像素点通不过深度测试,无法进行Blend效果的渲染。





4. Suppose fogStart = 10 and fogRange = 200. Compute foggedColor for when
(a) dist(p, E) = 160
(b) dist(p, E) = 110
(c) dist(p, E) = 60
(d) dist(p, E) = 30


(a) s = (160-10)/200 = 0.75, foggedColor = 0.75*fogColor + (1-0.75)*litColor.

其他类似。




5. Verify the effect techniques with gAlphaClip=false which do not have a discard instruction, and the techniques with gAlphaClip=true which do, by looking at the generated shader assembly. The discard instruction corresponds to the HLSL clip instruction.


Shader Model 5.0指令手册

HLSL:

		if(gAlphaClip)
		{
			// Discard pixel if texture alpha < 0.1.  Note that we do this
			// test as soon as possible so that we can potentially exit the shader 
			// early, thereby skipping the rest of the shader code.
			clip(texColor.a - 0.1f);
		}

fxc编译为汇编代码如下: (fxc编译时需要指定选项/Fc以生成.cod汇编文件)

                add r1.x, r0.w, l(-0.100000)
                lt r1.x, r1.x, l(0.000000)
                and r1.x, r1.x, l(-1)
                discard r1.x
可以看到最后一行的discard指令,其对应于HLSL里的clip指令,验证完成。



6. Modify the “Blend” demo by creating and applying a blend render state that disables color writes to the red and green color channels.


修改RenderStates.cpp中:

	transparentDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALPHA | D3D11_COLOR_WRITE_ENABLE_BLUE;
这样,设置RenderStates::TransparentBS为BlendState时,在Blend过程中会禁止对红绿通道的值进行写入。

效果当然是只看得见透明度不一的蓝色。




版权声明:本文为博主原创文章,未经博主允许不得转载。

编译原理 第二版 龙书 习题答案

  • 2013年10月23日 17:14
  • 3.34MB
  • 下载

编译原理/紫龙书(第2版) 答案 1.6

1.6.1 w=13 x=11 y=13 z=11 1.6.2 w=9 x=7 y=13 z=11 1.6.3 B1-w: B1-B3-B4 //B1块的w的作用域为:B1块减去B3块减去B4...
  • xdz78
  • xdz78
  • 2016年11月26日 22:38
  • 907

龙书D3D11章节习题答案(第五章)

以下答案仅供参考,有错欢迎留言。 Chapter 5:The Rendering Pipeline
  • tjj00686
  • tjj00686
  • 2016年04月12日 22:15
  • 1433

龙书D3D11章节习题答案(第八章)

以下答案仅供参考,有错欢迎留言。 Chapter 8: Texturing
  • tjj00686
  • tjj00686
  • 2016年05月28日 18:02
  • 2687

龙书D3D11章节习题答案(第六章)

以下答案仅供参考,有错欢迎留言。 Chapter 6:Drawing in Direct3D
  • tjj00686
  • tjj00686
  • 2016年04月28日 13:52
  • 1836

龙书D3D11章节习题答案(第十章)

以下答案仅供参考,有错欢迎留言。 Chapter 10: Stenciling
  • tjj00686
  • tjj00686
  • 2016年09月27日 00:13
  • 1218

龙书D3D11章节习题答案(第四章)

以下答案仅供参考,有错欢迎留言。 Chapter 4:Direct3D Initialzation
  • tjj00686
  • tjj00686
  • 2016年03月26日 16:48
  • 1355

龙书D3D11章节习题答案(第七章)

以下答案仅供参考,有错欢迎留言。 Chapter 7: Lighting
  • tjj00686
  • tjj00686
  • 2016年05月07日 16:07
  • 1239

【DX11习题学习一】第四章练习 Direct3D Foundations

本系列只针对书中每章节的编程练习题,不涉及书中的数学题,需要数学部分的解答请点击 对应原书 P137 4.7EXERCISES 1. Modify the previous exercise so...
  • u012325397
  • u012325397
  • 2016年06月20日 16:30
  • 228

【DX11习题学习二】第六章练习 Drawing in Direct3D(上)

本系列只针对书中每章节的编程练习题,不涉及书中的数学题,需要数学部分的解答请点击 对应原书 P137 4.7EXERCISES 1. Write down the D3D10_INPUT_E...
  • u012325397
  • u012325397
  • 2016年06月20日 16:31
  • 376
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:龙书D3D11章节习题答案(第九章)
举报原因:
原因补充:

(最多只允许输入30个字)