植被的渲染
植被的模型是通过建模导入得到的,本身是由多个面片组成的。
整个植被包含了albedo贴图+法线贴图+mask贴图。
我们使用一张mask贴图来完成透明测试,丢弃额外的像素。同时,需要关闭背面剔除,避免移动视角后植被消失。
植被的动画
接下来给植被加入一些随风轻微晃动的效果。此处的计算比较简单,就是使其沿着法线方向和垂直法线的方向做正弦周期摆动。为了避免整个植被都在晃动,有一种“站不稳”的感觉,此处设定了晃动幅度与y轴坐标相关联,也就是越高的地方,晃动幅度越大。
为了避免每个植被晃动一致,我们可以加入一些随机参数。此处使用worldPos.x变量保证每个植被得晃动周期能够错开。
此处的计算放在GPU中完成,在顶点着色器中实现,大致的计算如下:
float y = 100 * localPos.y;
y = y / (1 + y);
y = max(0, (y - 0.5) / 20);
float ratio = fWindSpeed * time;
vec3 dir1 = v_normal;
vec3 dir2 = cross(v_normal,vec3(0, 1, 0));
float strength = sin(ratio + worldPos.x) * y;
vec3 offset1 = dir1 * strength;
vec3 offset2 = dir2 * strength;
vec3 offset = mix(a1, a2, 0.5);
worldPos = worldPos + offset;
实例化渲染
渲染大量的植被会给GPU带来一定的负担。像这样大量的、较为一致的物体,可以使用实例化渲染进行优化。

本文详细介绍Unity中植物的渲染技巧,包括透明测试、背面剔除、动画效果及实例化渲染优化,提升游戏场景真实感。
最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



