作者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://webptt.com/cn.aspx?n=bbs/GameDesign/M.1456594801.A.C9D.html
1F:推 osanaosana: 第一个连结建议用goo.gl缩一下,文字排版建议修一下, 02/28 01:51
2F:→ osanaosana: 文章看起来蛮拥挤的... 02/28 01:52
3F:→ doomleika: 帮你缩 02/28 03:36
5F:推 eye5002003: 看起来更成熟了,刻意让浪小一点吗? 03/14 20:39