商丘网站公司,wordpress 爱情模板,网络服务器无响应,如何设计大气的网站在这章中#xff0c;把阴影贴图的思路扩展到正确处理全方位的#xff08;点#xff09;光源中#xff0c;其中包括了实现细节#xff0c;也涉及到基本硬件能力不足时的低效运行策略。
首先#xff0c;这篇文章也谈到了在实时计算机图形学中产生可见阴影的两个流行方法是…在这章中把阴影贴图的思路扩展到正确处理全方位的点光源中其中包括了实现细节也涉及到基本硬件能力不足时的低效运行策略。
首先这篇文章也谈到了在实时计算机图形学中产生可见阴影的两个流行方法是
模板阴影stencil shadows/ 阴影体(Shadow Volume) 相关知识可以参考之前的章 https://mp.csdn.net/postedit/89161545阴影贴图shadow mapping相关知识可以参考之前的文章 https://mp.csdn.net/postedit/89207385
模板阴影Stencil Shadows也被称Shadow Volume阴影体作在《Doom 3》中有所应用优点是得到大量的GPU支持、独立于光源的种类、产生的阴影质量很高。但缺点是严重依赖于CPU只能产生清晰的影子需要很高的填充率而且不能与硬件hardware-tessellated的表面一起使用。
阴影贴图Shadow Mapping,也译作阴影映射由Lance Williams于1978年引入计算机图形学文章发布当时多数好莱坞电影都在使用这个方法包括计算机渲染和特效。为了计算阴影阴影映射在场景几何体上投射特殊的动态创建的纹理。它可以渲染清晰和模糊的影子以及由不同类型的光源产生的阴影它还可以与硬件镶嵌的表面以及GPU动画的网格例如蒙皮网格一起使用。
该文章主要介绍了全方位阴影贴图Omnidirectional Shadow Mapping方法处理的对象是点光源因为点光源是向四周所有面发散光所以点光源的阴影贴图由立方体贴图实现。该方法有两个主要步骤
创建阴影贴图进行阴影投射
在创建阶段对所有把阴影投射到阴影贴图纹理上的物体渲染它们到光源的距离的平方。而在投射结算渲染所有接受阴影的物体并比较所渲染的像素到光源的距离的平方。以下为全方位阴影映射算法的伪代码
for (iLight 0; iLight NumberOfLights; iLight)
{// Fill the shadow map.for (iObject 0; iObject NumberOfObjects; iObject){RenderObjectToShadowMap(iLight, iObject);}// Lighting and shadow mapping.for (iObject 0; iObject NumberOfObjects; iObject) {LightAndShadeObject (iLight, iObject);}
}
具体实现可以参考 源代码http://http.download.nvidia.com/developer/GPU_Gems/CD_Image/Index.html
其中几个重要的点
从光源点出发视域必须90度将物体渲染进立方体贴图六个面浮点纹理和整数纹理的取样PCF算法产生软阴影上篇文章讲到的如下代码vFilter是个数组记录了周围四个采样点偏移位置代码中的0.25其实就是除以4的平均值循环四次后最后相加得到最终结果