From 2f310aa9f3f1cb1d51e8f62a6d5e3dda4821b82b Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 22 Sep 2021 19:25:56 +0800 Subject: *effect --- Assets/Scripts/Rendering/RenderingUtility.cs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'Assets/Scripts/Rendering') 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]; } + + /// + /// 计算在rt里面的区域 + /// + /// 相机 + /// 世界空间坐标 + /// 异体矩形(billboard)的相机空间大小 + /// + 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; + } + } -- cgit v1.1-26-g67d0