水面與紋理動畫

2021-08-23 13:25:29 字數 1288 閱讀 1868

一、

水面實現方法 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 使用此規則就可以將紋理分段來擷取了...