05 2012 档案

Directx11教程(54) 简单的基于GS的billboard实现
摘要:本章我们用一个billboard的实现来学习D3D11中的GS。 在VS shader中,我们输入的是顶点位置及顶点属性,输出的也是顶点位置及顶点属性。在GS shader中,我们输入的是体元(primitive,可以是点,线,三角形等等,凡是D3D11中允许的体元都可以使用), 输出顶点、顶点属性,以及体元信息。 如下面两个图,左边对一个三角形做vs操作,则会对三个顶... 阅读全文

posted @ 2012-05-26 06:21 迈克老狼2012 阅读(1639) 评论(0) 推荐(0) 编辑

Directx11教程(53) D3D11管线(8) GS的调度执行
摘要:在前面的教程中,我们分析了VS-PS的shader管线组合执行过程,本章我们分析一下VS-GS-PS的管线执行过程,主要是GS阶段hardware何如调度。 参考资料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-8/ 从D3D1... 阅读全文

posted @ 2012-05-25 20:29 迈克老狼2012 阅读(1393) 评论(0) 推荐(0) 编辑

Directx11教程(52) 实例(instancing)的简单应用
摘要:有些时候,我们需要在场景中渲染大量的重复的物体,比如体育场中的观众,森林里面的树木等等,这些物体具有相似的形状,比如很多树木,只是位置不同,或者贴图不同而已,如果重复渲染这些树木,用billboard技术,n棵树,就要输入n*4个顶点,在树木很多的时候,这也是比不小的开销,因为每次都要在syste... 阅读全文

posted @ 2012-05-18 20:17 迈克老狼2012 阅读(3719) 评论(0) 推荐(0) 编辑

Directx11教程(51) 简单的billboard
摘要:billboard称作公告板,通常用一个quad(四边形)表示[有的billboard用两个正交的quad表示],它的特点就是始终面向摄像机的方向。在大规模场景渲染中,可以公告板上贴一个纹理,比如树,这样在比较远的场景中,可以用它表示模型数据,从而减少场景中的顶点数量。 假定xz平面是大地,y轴是向上的方向,则billboard和y轴的方向一致,随... 阅读全文

posted @ 2012-05-16 21:09 迈克老狼2012 阅读(2023) 评论(0) 推荐(0) 编辑

Directx11教程(50) 输出depth/stencil buffer的内容
摘要:有时候,我们需要查看depth/stencil buffer的内容,比如上一章中,我们要查看stencil buffer,看看我们设置的stencil值是否起作用,这时就要输出depth/stencil buffer内容,但这些内容在gpu中,我们并不能直接查看,需要通过纹理copy,资源映射的方式,拷贝到system memory中才可以直接查看。 下面是输出depth... 阅读全文

posted @ 2012-05-15 21:32 迈克老狼2012 阅读(1935) 评论(0) 推荐(0) 编辑

Directx11教程(49) stencil的应用-镜面反射
摘要:本教程中,我们利用stencil来实现一个镜面反射效果。 1、首先我们要在D3DClass中增加几个成员变量及函数。 ID3D11DepthStencilState* m_depthStencilStateMirror; ID3D11DepthStencilState* m_depthStencilStateReflect; m_depthStencilSt... 阅读全文

posted @ 2012-05-15 20:12 迈克老狼2012 阅读(3792) 评论(0) 推荐(0) 编辑

Directx11教程(48) depth/stencil buffer的作用
摘要:在D3D11中,有depth/stencil buffer,它们和framebuffer相对应,如下图所示,framebuffer中一个像素,有相对应的depth buffer和stencil buffer值: D3D11中,depth buffer和stencil buffer一起定义,比如DXGI_FORMAT_D24_UNORM_S8_UINT,是指用一个无... 阅读全文

posted @ 2012-05-15 07:52 迈克老狼2012 阅读(6739) 评论(0) 推荐(1) 编辑

Directx11教程(47) alpha blend(4)-雾的实现
摘要:除了用来实现透明效果之外,我们还可以用alpha blend来实现雾(fog)的效果。通过逐渐清晰的雾气效果,可以增加场景的真实感。 雾的效果实现很简单,首先我们要一种颜色来表示雾,通常使用用灰色。 其实雾的效果和视点有很大关系,距离视点越近,雾就越淡,距离越远,雾就越浓。 最终物体颜色是雾的颜色和计算出的pixel颜色的混合,我们使用的公式如下:... 阅读全文

posted @ 2012-05-12 11:40 迈克老狼2012 阅读(2096) 评论(3) 推荐(1) 编辑

Directx11教程(46) alpha blend(3)
摘要:现在我们尝试改变box的贴图,使用一张带alpha的dds文件wirefence.dds, 用directx texture tool打开文件界面如下: 实际上,这幅图中一些像素有alpha值,一些像素alpha值为0,我们点击View-alpha channel only,可以看到下面的图,其中黑色部分的alpha值为0: 现在我们把这幅图贴到... 阅读全文

posted @ 2012-05-12 07:15 迈克老狼2012 阅读(1722) 评论(0) 推荐(0) 编辑

Directx11教程(45) alpha blend(2)
摘要:在myTutorialD3D11_40中,我们在场景中再添加一个box,并把box放在水里,实现半透明的效果。如下图所示: 我们要特别注意一点的就是场景中物体的渲染次序,先渲染山谷、第二个box,第三个水。 box和水的顺序不能颠倒,颠倒后的效果如下,没有了透明的效果: 完整的代码请参考: 工程文件myTutorialD3D11_40 代码下载: h... 阅读全文

posted @ 2012-05-11 22:01 迈克老狼2012 阅读(1241) 评论(0) 推荐(0) 编辑

Directx11教程(44) alpha blend(1)
摘要:我们知道,D3D11中按Frame来渲染物体,每个Frame中又可能包含若干个primitive,如下面的示意图所示: gpu在实际渲染中,会按帧来渲染,比如上图frame0中,有两个primitive(三角形),经过vs以后,PA(primitive assemble) block会进行体元装配,然后进行光栅化操作,光栅化操作时候,会比较depth buffer的值。因... 阅读全文

posted @ 2012-05-11 07:29 迈克老狼2012 阅读(4809) 评论(3) 推荐(0) 编辑

Directx11教程(43) 纹理映射(13)-动态纹理映射
摘要:本篇教程中,我们将在前面基于光照的地形与水面程序里面加上纹理映射,而且我们会基于时间动态改变水面的纹理坐标,实现水面纹理波动的效果。 地形(山谷)以及水面都是基于网格的平面。 对于地形,修改顶点类型为: struct VertexType { D3DXVECTOR3 position; ... 阅读全文

posted @ 2012-05-10 07:16 迈克老狼2012 阅读(2179) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示