将显示 depthmap 不能由用户指定,且仅用于自动模式。它的唯一作用是能够小幅度地优化内存/性能。
为便于使用,以正确的格式传递显式光照贴图不是必需的。但是,由于所有参与着色器必须了解使用的光照贴图,因此可以使用一种特殊类型的现象,其中现象的前两个参数必须是 lightmap 和 depthmap 对。无论各个着色器在现象中的哪个位置使用,它们都必须通过 interface 连接链接到这前两个参数,而不是设定为特定值。
只有满足这些条件,才能使用自动光照贴图创建。如果不满足上述条件,必须使用光照贴图手动指定。
以下是满足这些条件的现象的伪代码:
declare phenomenon material "my_sss_phenomenon" ( color texture "lightmap", # must be first color texture "depthmap", # must be second color "diffuse_paint", color "my_special_color", scalar "lightmap_size", # for example ... ) shader "myscattering" "misss_fast_shader" ( "lightmap" = interface "lightmap", # required "depthmap" = interface "depthmap", # required "diffuse_illum" ... ... ) shader "mylightmapping" "misss_lightmap_write" ( "lightmap" = interface "lightmap", # required "depthmap" = interface "depthmap", # required "lightmap_group" "A", "lightmap_size" = interface "lightmap_size", # for example ... ) ... end declare
如果未遵循这些准则,可能会导致现象行为无法预测,并且可能会在着色器尝试通过丢失或用于其他目的的参数窗口通信时中止渲染。
mental ray 渲染光照贴图时,它尝试基于每个对象将工作量分配给多台主机。但是,misss_fast_ 着色器鼓励(由于内存效率)并在某些情况下需要(对于要彼此散射的单个对象)多个对象共享同一个光照贴图。
多台主机写入到同一光照贴图在 mental ray 中是不可能的,并将会产生冲突,从而导致创建不完整或错误的光照贴图数据。
以下是解决该问题的一些方法:
Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.