summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Rendering/RenderingUtility.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-09-22 19:25:56 +0800
committerchai <chaifix@163.com>2021-09-22 19:25:56 +0800
commit2f310aa9f3f1cb1d51e8f62a6d5e3dda4821b82b (patch)
treedefb1bd9e61fc8b0575337c2fdf73754f2fd1e20 /Assets/Scripts/Rendering/RenderingUtility.cs
parent84fdd90eac4431fa278c11d7664c1d954f80b883 (diff)
*effect
Diffstat (limited to 'Assets/Scripts/Rendering/RenderingUtility.cs')
-rw-r--r--Assets/Scripts/Rendering/RenderingUtility.cs27
1 files changed, 27 insertions, 0 deletions
diff --git a/Assets/Scripts/Rendering/RenderingUtility.cs b/Assets/Scripts/Rendering/RenderingUtility.cs
index 297a9b79..90ef84fd 100644
--- a/Assets/Scripts/Rendering/RenderingUtility.cs
+++ b/Assets/Scripts/Rendering/RenderingUtility.cs
@@ -63,4 +63,31 @@ public static class RenderingUtility
{
return renderingEventToCameraEventDic[e];
}
+
+ /// <summary>
+ /// 计算在rt里面的区域
+ /// </summary>
+ /// <param name="camera">相机</param>
+ /// <param name="worldPos">世界空间坐标</param>
+ /// <param name="size">异体矩形(billboard)的相机空间大小</param>
+ /// <returns></returns>
+ public static Vector4 GetTillingOffset(Camera camera, Vector3 worldPos, float size)
+ {
+ Vector4 tileOffset = new Vector4(1,1,0,0);
+ Vector3 camPos = camera.WorldToCameraSpace(worldPos);
+
+ Vector3 bottomLeft = new Vector3(camPos.x - size / 2, camPos.y - size / 2, camPos.z);
+ Vector3 topRight = new Vector3(camPos.x + size / 2, camPos.y + size / 2, camPos.z);
+ Vector2 blViewPos = camera.CameraToViewportSpace(bottomLeft);
+ Vector2 trViewPos = camera.CameraToViewportSpace(topRight);
+ float width = trViewPos.x - blViewPos.x;
+ float height = trViewPos.y - blViewPos.y;
+
+ tileOffset.x = width;
+ tileOffset.y = height;
+ tileOffset.z = blViewPos.x;
+ tileOffset.w = blViewPos.y;
+ return tileOffset;
+ }
+
}