citywar Engine TechDemo v1.2 發佈

citywar Engine TechDemo v1.2

包含功能:

1.cascade shadow + rain 特效 + 50個人物影子 + culling 速度加快

2.一個編輯 rain特效的介面

3.一個 FPS第一人稱的遊戲方式.


citywar techdemo v1.2 下載(29mb)

https://app.box.com/s/qzqrqmezroja55xbvu94


culling 做了2個加速:

1.1本來是對每個obj做culling, 這數量太大, 全部 464個.

camera cull + cascade  shadow cull *2(層) +water reflect + rain reflect
總共 5*464  次.
後改用 用每一個group做culling 476減少到 171. cpu 少掉 5*(464-171)=1465次運算.
雖然不夠精確 但是速度提升15張.

1.2. shadow culling 本來就有做.但是有些obj總是在影子裡 根本不用算.
 nObjAlways _InShadow, 這有84個obj. 速度也是提升15張.



citywarEngine 1.2 Rain Effect

下禮拜會丟出一個執行檔:demo cascade shadow + rain effect

雨的特效就先這樣了. 能參考的資料太少 又太難寫.

每加一個特效  都要跟原來的整合,整理程式的時間就愈長.

接下來會寫 lighting + cull 這資料就比較多了




如何用簡單的方法解決複雜的問題?

如何用簡單的方法解決複雜的問題?

這不只在程式方面, 很多方面都可以適用.


原則1: 任何的問題都是複雜的問題. (不要認為有簡單的問題)

原則2:任何複雜的問題 都不可能被完美的解決.(該知道到甚麼地步就該適可而已)

原則3:用複雜的方法只會引起更多的問題.

原則4:要花很長時間想出一個簡單的方法解決複雜的問題.(不要太懶了)

很多時候想到的方法 都是複雜的方法, 因為很快就想出來, 結果花大量的時間在 debug,
最後因為方法太過複雜,導致放棄 .


如何用簡單的方法解決複雜的問題?

1.把問題的重點抓出來, 這需要訓練 長時間訓練的結果 才能看出問題的重點.

2.解決重點問題. 代表就解決 80%以上的問題. 其他的細節就可以簡化了.

3.要解決一個複雜的核心問題, 要從各種角度 就是360度 逼近問題.
不要太死腦袋, 一定要怎麼做才可.


廣泛的閱讀 收集資料, 然後逼近核心.

無差別人物影子數

1. 一開始人物影子在 vertex shader計算, 受限於 vertex shader送到pixel shader register數目限制, 只有5個人物影子

2.用cascade shadow後, 人物影子計算改在pixel  shader 計算, 人物影子數提升到10.


3.突然想到 既然場景影子已經是即時產生, 那人物影子也是即時產生, shadowmap可以合併.

不只程式簡化 只處理 cascade shadowmap.

而且 人物影子數目就沒有限制了. 50個人物影子.