`
plmkome
  • 浏览: 41712 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Vision引擎中特殊效果 - 立方体贴图介绍

 
阅读更多
立方体贴图是表现为六面体的纹理。 因此,这是反射静态场景元素的环境反射着色器效果的理想方案。 例如,车窗或商店橱窗上反射出的天空和周边建筑。

技术说明: vForge 中的立方体图形是某个立方体渲染目标的代理。 它使用图形位置,通过相应透视来渲染立方体的 6 个面。 立方体纹理可以有两种截然不同的来源:
 
 可以从 .dds 文件载入,使用 dds 立方体贴图文件格式
 可以在 vForge / 应用程序中渲染,使用 3D 空间中的一个定义位置
 
立方体贴图图形
立方体贴图图形位于效果图形组,从图形创建面板将立方体贴图图形实例拖拽到场景中即可完成添加。

编辑立方体贴图
使用标准 3D 控制器移动工具,可按您的要求将立方体贴图放置在场景的任何位置。 缩放比例可用来控制预览球的大小,但对渲染图像无效。
 
当属性被更改,立方体贴图图形有时不会自动进行相应的视觉更新。 vForge 提供一个更新小图标,按下该图标可刷新所有当前更改。

  注:在图形列表中被选中、或当 AlwaysVisible(始终可见)属性被启用时,立方体贴图图形仅在 vForge 编辑器中可见。 移动预览球,视图中的编辑器纹理将立即更新(可选属性)。 这要求对场景进行 6 次渲染,每个立方体面一次。 在零售程序中,这将造成性能下降,在最终应用程序中,默认设置下仅载入场景时进行渲染。
 
如何使用立方体贴图实现材质效果
请查看本教程!
 
将立方体贴图代理保存为 DDS 文件
如果一个场景随立方体贴图代理导出,(见下方属性部分了解如何导出 dds 文件),这些代理会被应用程序载入,在启动时渲染。 但这样处理有一些显著的缺陷:
 
为渲染第一帧的所有代理,载入时间会变长
未压缩格式等渲染目标的内存占用大大增加
渲染上下文负担
电脑 DX9:设备失去响应
 
为弥补这一问题,立方体贴图图形可将其内容保存为 dds 文件。 该文件可平滑整合入工作流:
 
  指定一个以 .dds 结尾的立方体贴图键名。 这是令代理得以保存的关键词。 例如 Key = testCubemap.dds
  现在可以使用图形相关操作将其保存为 dds。
  此外,每次场景导出时,这些代理都会被保存为 dds 文件(可选,通过属性设置)
  着色器通过带 .dds 扩展名的键名来引用这些立方体贴图。 在 vForge 中使用渲染目标,而导出版本载入所保存 .dds 的当前版本。
  零售程序中不进行立方体贴图渲染
 
立方体贴图文件保存为不带 MIP 贴图的未压缩 32 位 dds 立方体贴图纹理。 但可以使用常用工具将其转换为带 MIP 贴图的压缩类型。
 
立方体贴图选项
为了最大限度地发挥该图形类型的功效,除了缩放比例、位置等基本属性,还有一些您需要了解、也值得提及的立方体贴图属性。
 
  立方体贴图

Key(键名): 可作为着色器中的纹理文件名指定的立方体贴图名称。 如果键名指定为 *.dds 文件,则该文件可手动保存,或在场景导出时保存。
EdgeSize(边缘尺寸): 立方体贴图纹理的边缘尺寸,必须为 2 的次方。

NumBlurPasses(模糊通路数量): 立方体贴图的高斯模糊通路数量(0 为最快)。

SaveOnExport(导出时保存): 如果键名指定为目标 *.dds 文件,则该勾选项决定了 *.dds 文件是否在场景导出时保存。
 
立方体贴图更新
用于自定义运行期间或编辑器中的立方体贴图内容更新的属性。

AutoGenerateMipMaps(自动生成 Mip 贴图): 指示立方体贴图是否自动生成 Mip 贴图。
ContinuousUpdate(连续更新): 如启用,立方体贴图会在游戏中被连续更新,这会对性能造成显著影响。 如关闭,立方体贴图仅在创建时获得渲染。
AlternatingFaceUpdate(交替面更新): 如启用 ContinuousUpdate,该选项定义了是否一个时钟周期只渲染一个面,也就是用 6 帧来渲染 6 个面。 该选项可将性能负担分散到若干帧。
UpdateInterval(更新间隔): 如启用 ContinuousUpdate,该选项定义了渲染之间的时间间隔。 0 表示每帧更新。
AlwaysUpdateInEditor(始终在编辑器中更新): 该选项仅影响在 vForge 编辑器中渲染的立方体贴图,如启用,则每当图形位置改变时都会更新。
UpdateCount(更新计数): 如启用 ContinuousUpdate,该参数定义了可用更新的数量,0 为无限计数。
 
立方体贴图渲染
 
标准场景渲染
   在该模式下,立方体贴图使用简化正向渲染器来渲染。

该渲染模式适合运行期间的动态反射,可见 DynamicCubemaps(动态立方体贴图)示例的演示。 但使用延迟渲染器时,所产生的立方体贴图将不被照亮。
 
要使用该模式,请将 RenderingType(延迟类型)设为 Scene(场景)。

要覆盖的属性:
 
   RenderFilterMask(渲染器过滤蒙版): 在立方体渲染循环中过滤场景元素的位元蒙版。 该蒙版与实例实体的 VisibleBitmask(可视性蒙版)值为 AND 逻辑关系。 请注意,立方体贴图预览球使用第一个可视性位元,所以,如果启用渲染器过滤器蒙版中的第一个位元,可能导致预览球体被重新渲染回立方体贴图中。
   NearClipDistance / FarClipDistance(近切距离 / 远切距离): 分别控制几何体被渲染的最小和最大距离。
 
  提示:要看到立方体贴图中的天空,您需要在立方体贴图的 RenderFilterMask(渲染器过滤蒙版)中包含天空可视性位元。
 
渲染器节点渲染
在此模式下,每个面都执行一套完整的渲染器节点流水线,形成完全照亮且后期处理过的立方体贴图反射。

该渲染模式会生成高品质结果,但负担较高,不适合动态反射。 尽量避免启用 ContinuousUpdate(连续更新)选项,否则会显著拖慢 vForge。
 
要使用这一模式,您首先要导出一份供该立方体贴图使用的渲染器节点设置。 要进行导出,请按需要配置主层渲染器设置,然后将设置导出为引擎文件:

   注:在设置中禁用辉光、色调映射等效果,否则这些效果会被应用两次--一次是在渲染入立方体贴图时,另一次是在实际场景渲染时。
 
然后选择 RenderingType(渲染类型) RendererNode(渲染节点),为 RendererConfig(渲染配置)选项提供导出文件。

可用选项与场景类型相同。
 
  伪高光渲染
 
在此模式下,周围动态光照的高光会聚集到立方体贴图中。

该模式生成的立方体贴图应当和 MobileShadersFakeSpecular(移动设备着色器伪高光)材质结合使用,要使用该模式,请选择渲染类型 高光。 通常,该模式使用很低的立方体分辨率就足够了。

SpecularPower(高光强度): 伪高光着色器忽略材质的高光强度。 所以必须使用该选项来控制高光反射的锐度和强度。 该值越高,波瓣就越锐利。

转自:project anarchy中文社区

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics