Billboards 技术在Unity 中的几种使用方法

本文探讨了Unity中Billboards技术的多种使用方法,包括world space、clip space、view space计算以及CPU计算。Billboards技术广泛应用于游戏角色的头顶文字和血条显示,场景中的树木、草地渲染,特效粒子效果,以及3D场景内的2D角色呈现。
关于billboard技术,原理就是计算出来一个始终朝向摄像机的面片,可以在CPU里计算,也可以在GPU里实现。应用的场合很多:

 
 
 
  • 游戏角色的头顶文字,血条
  • 场景的树,草
  • 特效粒子片
  • 3d场景里的2d角色

world space计算

思路:shader中传入面片的中心点的世界坐标,以及摄像机的right和up在world space的方向,中心点直接沿着right和up方向计算四个顶点的世界坐标,定点数据中包含了每个顶点的偏移信息。然后乘以ViewProjection矩阵,作为输出。 这里有个trick的地方,就是从object space 到world space是没有旋转的,只有偏移,所以摄像机在世界空间的right就是模型空间的right。MV的逆矩阵相当于View到Object的变换,转置是为了去列向量好取。
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
                float2 vertexOffset : TEXCOORD1;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;

            v2f vert (appdata v)
            {
                v2f o;

                //这里相当于取列向量

                float3 r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值