Sfoglia il codice sorgente

fix ray generation

Kolja Strohm 3 settimane fa
parent
commit
f40f72d501
2 ha cambiato i file con 5 aggiunte e 2 eliminazioni
  1. 3 1
      Framework Tests/Camera3D.cpp
  2. 2 1
      RayGen.hlsl

+ 3 - 1
Framework Tests/Camera3D.cpp

@@ -74,7 +74,7 @@ namespace FrameworkTests
             screen.setTestRend(0);
 
             Framework::Cam3D cam;
-            cam.setPosition({0.f, 0.f, 0.f});
+            cam.setPosition({0.f, -1000.f, 0.f});
             Framework::Vec3<float> target(0, 1000, 0);
             cam.setViewDirection(target);
             Framework::World3D world;
@@ -263,6 +263,8 @@ namespace FrameworkTests
                          | Framework::Cam3D::Style::Zoomable
                          | Framework::Cam3D::Style::Tick);
             cam.setMovementSpeed(0.1f);
+            cam.setScreenPosition(0, 0);
+            cam.setScreenSize(screen.getBackBufferSize());
             screen.addKamera(dynamic_cast<Framework::Cam3D*>(cam.getThis()));
 
             Framework::RenderTh rTh;

+ 2 - 1
RayGen.hlsl

@@ -36,7 +36,8 @@ void RayGen()
         float2 d = (dispatchPercentage * 2.f - 1.f);
         RayDesc ray;
         ray.Origin = mul(inverseView, float4(0, 0, 0, 1)).xyz;
-        float4 target = mul(inverseProjection, float4(d.x, d.y, -1, 1));
+        float4 target = mul(inverseProjection, float4(d.x, -d.y, -1, 1));
+        target.w = 1;
         ray.Direction = mul(inverseView, target).xyz - ray.Origin;
         ray.TMin = minDistance;
         ray.TMax = maxDistance;