作者tim099 (tim11251994)
看板GameDesign
標題[程式]水面效果實作方法分享&討論
時間Sun Feb 28 01:39:57 2016
大家好
由於我目前正在製作的遊戲(+簡易遊戲引擎
需要製作水面的渲染(render),因此找了相關的資料
目前以該教學網頁的方法做修改後去實作
連結:
https://tutorialsplay.com/opengl/2014/09/26/lesson-15-water
-with-opengl-on-the-gpu-with-glsl/
目前實作方法為,先生成水的mesh後儲存
(除非水產生變化,否則不進行修改,重複使用
接著由於水是半透明的,因此需要在非透明物體先render完後
才能進行render避免遮蓋後方物體
(因為depth test關係,水面雖然是透明
接著在vertex shader計算水波的高度(我是使用多個波進行重疊
需要的參數有時間,波長,波高,座標(目前vertex的世界座標,取x跟z
接著直接修改vertex高度(vertex的高度+=波高
我是在geometry shader用三角形兩邊向量cross取法向量
(其實應該有更好的方法,
最後在fragment shader用水的顏色(自己設定的..)
跟skymap(一個存背景圖的cubeMap)取出的反射顏色去混色
最後乘上亮度,設定水的透明度(我是抓0.85)
就完成簡易的水的渲染了
附上影片demo
https://youtu.be/8Ceof034DAY
github原始碼連結:
https://github.com/tim099/GameTest
希望也能有人分享一些相關的資料
感謝您耐心的閱讀
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.234.148
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1456594801.A.C9D.html
推 osanaosana: 第一個連結建議用goo.gl縮一下,文字排版建議修一下, 02/28 01:51
→ osanaosana: 文章看起來蠻擁擠的... 02/28 01:52
→ doomleika: 幫你縮 02/28 03:36
推 eye5002003: 看起來更成熟了,刻意讓浪小一點嗎? 03/14 20:39