From be3b4dacdd5c8d6009c9deb6b14c397838ab7080 Mon Sep 17 00:00:00 2001 From: Brian-E Date: Wed, 27 Sep 2023 14:53:33 +0100 Subject: [PATCH] reverted Vector3Transform back --- src/rcore.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index 5477741f2..51f06ae4e 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -2963,14 +2963,17 @@ Vector2 GetWorldToScreenEx(Vector3 position, Camera camera, int width, int heigh // Calculate view matrix from camera look at (and transpose it) Matrix matView = MatrixLookAt(camera.position, camera.target, camera.up); + // Convert world position vector to quaternion + Quaternion worldPos = { position.x, position.y, position.z, 1.0f }; + // Transform world position to view - Vector3 worldPos = Vector3Transform(position, matView); + worldPos = QuaternionTransform(worldPos, matView); // Transform result to projection (clip space position) - worldPos = Vector3Transform(worldPos, matProj); + worldPos = QuaternionTransform(worldPos, matProj); // Calculate normalized device coordinates (inverted y) - Vector3 ndcPos = { worldPos.x, -worldPos.y, worldPos.z }; + Vector3 ndcPos = { worldPos.x/worldPos.w, -worldPos.y/worldPos.w, worldPos.z/worldPos.w }; // Calculate 2d screen position vector Vector2 screenPosition = { (ndcPos.x + 1.0f)/2.0f*(float)width, (ndcPos.y + 1.0f)/2.0f*(float)height };