HLSL风吹草动shader

挺简单的,就是横向和纵向加一些sin和cos进行扰动代码如下

float3 GetWindEffect(float3 VertexWorldPos, float VertexColorRed, float GrassUV, float WindSpeed, float WindStrenth, float GameTime, float bGrass)
{
    float Timer = GameTime * WindSpeed;
	
    float3 WindOffset = float3(0, 0, 0);
    float3 GrassWindOffset = float3(0, 0, 0);

	//树木
    if (bGrass < 0.5)
    {
        WindOffset.x = sin(cos(Timer + VertexWorldPos.x)) * WindStrenth * VertexColorRed;
        WindOffset.z = cos(sin(Timer + VertexWorldPos.z) + VertexWorldPos.z) * WindStrenth * VertexColorRed;
        return WindOffset;
    }
	//草
    else
    {
       // float WindDirectionX = sin(Timer) + VertexWorldPos.y
        float UVChange = 1 - abs(GrassUV);
        GrassWindOffset.z = UVChange * sin(cos(Timer + VertexWorldPos.z)) * WindStrenth;
        GrassWindOffset.x = UVChange * cos(sin(Timer + VertexWorldPos.x)) * WindStrenth;
        GrassWindOffset.y = 0;
        return GrassWindOffset;

    }
    return WindOffset;
}

有一个float值bGrass区分这个物体时草还是树。

草的根部固定用的是UV衰减,植被使用顶点色来控制树叶根部晃动幅度小于树叶的晃动幅度。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值