[OpenGL] 植被的动画和笔刷效果

本文详细介绍Unity中植物的渲染技巧,包括透明测试、背面剔除、动画效果及实例化渲染优化,提升游戏场景真实感。
资源来自Unreal商店

 

植被的渲染

        植被的模型是通过建模导入得到的,本身是由多个面片组成的。

        整个植被包含了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带来一定的负担。像这样大量的、较为一致的物体,可以使用实例化渲染进行优化。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值