unity-shader-草grass实现

88 篇文章 8 订阅
31 篇文章 7 订阅

title: unity-shader-草grass实现
categories: Unity3d-Shader
tags: [unity, shader, grass, 草, geometry shader]
date: 2019-05-20 02:37:16
comments: false

unity-shader-草grass实现


前篇


草体结构

多个面片组成草体结构

传统的方式,即将模型数据从CPU传递给GPU,GPU再根据这些数据进行渲染的方式在渲染大规模的草体时,往往会忽略单个草体的模型细节。因为单个草体的建模如果过于细致,则渲染大片的草地就需要传递很多多边形,从而造成性能的下降。
因此,一个渲染大片草地的方案往往需要满足以下条件:

  • 单个草的多边形不能过多,最好一棵草只用一个quad来表示
  • 从不同的角度观察,草都必须显得密集
  • 草的排布不能过于规则,否则会不自然

综上,渲染草体时的经典结构——星形就出现了

星型结构可以减小从不同角度看到面片, 防止看到的知识面片的侧面 (观察方向与 面片平行, 也就啥都看不到)

顶点动画

在加上顶点动画, 让看起来有风吹的效果

if (o.uv.y > 0.5) {
    float4 translationPos =
        float4(sin(_Time.x * _TimeFactor * Pi ), 0, sin(_Time.y * _TimeFactor * Pi ), 0);
    v.vertex += translationPos * _StrengthFactor;
}

判断草面片的哪些顶底需要做动画, 用的是uv中的 v 值 > 0.5 (opengl, dx是反过来的) , 所以面片顶部顶点的v值要大于0.5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝶泳奈何桥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值