一、
水面實現方法 l
最找人們考慮水面,往往將其考慮為一堆三角形組成的網格,網格的規則抖動便構成了波紋。但是,這種方法可以讓場景比蝸牛還慢,因此只用作研究。 l
早期水面的實現方法基本上都是紋理動畫,這種方法直到今天為止還在使用。紋理動畫最簡單最基礎,對美工的要求比較高,對程式要求相當低。 l
bump env
技術出現後,水面的實現方法便開始多樣起來,這些水面為場景的真實性做出了不朽的貢獻。 l
shader
改變了水面實現的方式,它使得人們建立動感的水成為了可能。 l
用shader
實現的水面可以完美地顯示出波動和其他特殊的效果。
二、紋理動畫原理 l
l紋理動畫的用途相當廣泛,水面只是這些應用中比較出彩的一種。 l
平均每s l
動畫更新函式
void update( float felapsed )
// m_felapsed = 0.0f; //
重新計時}}
l渲染函式
void render() l
紋理動畫所實現的水面一般由大量平板組成。 三、
水面的vb
和ibl
紋理動畫實現的水面很少有需要動態變化的,因此建立靜態的vb
和ib以提高渲染速度成為了乙個優化的手段。 l
具體實現參看** 四、
魔獸水面紋理演算法 l
魔獸水面經過打光處理,所以我們必須新增乙個光源,和乙個材質。 l
同時,為了將光的影響和水本身的紋理因素新增到一起,由於水本身的紋理較暗,我們使用add
演算法,使得光對水面的影響更加明顯。 l
最後,水紋理在alpha
通道中存的高光資訊,通過modulatealpha_addcolor
演算法使之影響到場景中。 l
modulatealpha_addcolor
:arg1
的rgb + arg2
的rgb*arg1
的alpha
l這裡只需要為arg1
和arg2
都取current
就可以了。 五、
總結 l水面的實現技術包括網格化水面、紋理動畫、硬體bumpenv
和各種不同的水面shader
演算法。
l用紋理動畫實現水面,必須依照紋理的特性而選擇不同的紋理演算法。 l
對於魔獸的水面,除了打光外,我們開啟了兩條紋理通道,分別使用了add
演算法和modulatealpha_addcolor
演算法。
Ogre 紋理動畫
最近在使用ogre的過程中遇到要實現乙個模型上的材質動畫,而ogre的骨骼動畫 不能實現材質動畫,後來發現ogre支援紋理動畫。其實現如下 在材質定做如下定義 texture unit anim texture attest.jpg 2 0.5 代表attest.jpg這樣命名的紋理有2張,間隔時間...
紋理動畫,滾動背景
1 取樣時,隨著時間不斷移動uv的x軸,形成動畫效果。2 兩張,前置帶有透明通道,後置不帶,然後按alpha權重進行取樣。shader custom scrollingbackground detailtex 2ndlayer 2d white scrollx basespeed float 1 s...
Unity著色器紋理動畫
unity中shader可以採用cg來書寫.此文演示了如何利用紋理座標來分段街區紋理.正常的紋理座標範圍 0.1 座標超出此範圍可以用多種方式來處理,如wrap,clamp,mirror等.假設紋理分為n段,則,每段對應的紋理座標為 0.1 n index 1 n 使用此規則就可以將紋理分段來擷取了...