基于计算着色器实现BlendShape三维人脸表情动画驱动

为什么要用计算着色器呢? 因为人脸表情基模型顶点数实在是太多了,而且有不止一个模型,动画越精细,表情基模型越多,这个时候仅仅用CPU计算显然是不够的,所以就开始上GPU了,并行计算。

直接上计算着色器的代码:

1、ComputeShader.compute
#pragma kernel Cul 

RWStructuredBuffer<float3> vertBuffer;
StructuredBuffer<float3> blendshapeBuffer;
StructuredBuffer<float3> naturalBuffer;
float weight;//表情基权重

[numthreads(32,32,1)]
void Cul(uint3 id : SV_DispatchThreadID) {
   
	int index = id.x * 32 * 4 + id.y;
	vertBuffer[index] = vertBuffer[index] + (blendshapeBuffer[index] - naturalBuffer[index]) * weight;
}

2、ComputeShaderCS.cs
[RequireComponent(typeof(MeshFilter))]
public class 
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值