[程式]水面效果实作方法分享&讨论

楼主: tim099 (tim11251994)   2016-02-28 01:39:57
大家好
由于我目前正在制作的游戏(+简易游戏引擎
需要制作水面的渲染(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
希望也能有人分享一些相关的资料
感谢您耐心的阅读
作者: osanaosana (芋头一颗多少钱)   2016-02-28 01:51:00
第一个连结建议用goo.gl缩一下,文字排版建议修一下,文章看起来蛮拥挤的...
作者: doomleika (iSuck)   2016-02-28 03:36:00
作者: eye5002003 (下一夜)   2016-03-14 20:39:00
看起来更成熟了,刻意让浪小一点吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com