UV常用操作

本文介绍了UV旋转的两种实现方法:使用矩阵乘法和直接计算方式,并展示了如何在屏幕空间中正确读取贴图,适用于游戏开发和图形渲染领域的专业人士。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.UV旋转

          float2 rotate(float degree, float2 coord)
          {
                float theta = radians(degree);
                float2 offset = float2(_OffsetX, _OffsetY);
                
                float2x2 rotationMatrix = float2x2(cos(theta), -sin(theta),
                                                   sin(theta),  cos(theta));
                return mul(rotationMatrix, coord - offset) + offset;
            }
            
            float2 rotateWithOffset(float degree, float2 coord)
            {
                coord.x -= _OffsetX;
                coord.y -= _OffsetY;
                
                float t = radians(degree);
                float c = cos(t);
                float s = sin(t);
                float2 n;
                n.x = c * coord.x + -s * coord.y + _OffsetX;
                n.y = s * coord.x + c * coord.y + _OffsetY;
                return n;
            }

2.屏幕空间的贴图
i.pos来自屏幕裁剪空间
return tex2D(_MainTex, i.pos.xy / _ScreenParams.x);
或者这样
pos = UnityObjectToClipPos(v.vertex);
screenPos = ComputeScreenPos(o.pos);
tex2D(_ScreenTex, float2(screenPos.xy / screenPos.w))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值