Thursday, June 12, 2008

善用filter

因為很懶,所以很久沒有新內容了,
最近因為算的東西用了許多的displacement,
而且displacement bound都開的蠻大的,
造成了運算的時間還蠻久的,
可是mtor預設是算shadow map也會算Displacement,
所以就造成了運算shadow map時間還比較久一點,
以目前我這個case其實shadow部分有沒有displacement並不是那麼重要,
是可以偷時間的地方,
所以就去看了一下文件。

在mtor產生rib的時候,會在一些地方加入filter來控制要不要加入某些元素,
就可以裡用這個架構來做一些修正,
利用加入Attribute來控制rib真正的內容,
幾個比較重要的有
RATFilterSurface, RATFilterLightSource, RATFilterVolume,
user:RATFilterSurface, user:RATFilterDisplacement

所以如果我們不要加入displacement資訊,
就可以加入一個ribbox取名frame或world,
然後內容填上
Attribute "user" "uniform int RATFilterDisplacement" \[1\]
這樣displacement資訊就會被filter掉了。

當然啦,這樣一定不只算shadow時不會有displacement,
連算圖的時後也不會有displacement。
所以如果單純只是要shadow不產生displacement,
可以改用ribboxAdapter,
這時候ribboxAdapter取名frame或world,
Controller選ElementType,
然後新產生一個condition,
將 * 改成 shadow,然後連上一個ribbox,
然後內容填上
Attribute "user" "uniform int RATFilterDisplacement" \[1\]

(記得這時候的ribbox請不要取frame或world)
同樣的這樣也可以也可以做surface的置換,
做shadow pass就不用拔來拔去了。

No comments: