Skip to content

Commit 16c79f9

Browse files
committed
RectangleLight: fix crash
1 parent 96b9ef0 commit 16c79f9

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

h3d/scene/pbr/RectangleLight.hx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ class RectangleLight extends Light {
182182
points.push(p2);
183183

184184
primitive = new h3d.prim.Polygon(points);
185+
cast (primitive, h3d.prim.Polygon).addNormals();
185186
return primitive;
186187
}
187188

h3d/shader/pbr/Light.hx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ class RectangleLight extends Light {
216216

217217
var view : Vec3;
218218
var normal : Vec3;
219+
final epsilon : Float = 0.00001;
219220

220221
function getIntersectionPoint(rayOrigin : Vec3, rayDirection : Vec3, p0 : Vec3, p1 : Vec3, p2 : Vec3) : Vec3 {
221222
var planeNormal = cross(p1 - p0, p2 - p1).normalize();
@@ -276,13 +277,13 @@ class RectangleLight extends Light {
276277
var delta = closestPointDiffuse - transformedPosition;
277278
pbrLightDirection = normalize(delta);
278279

279-
var xyEpsilon = horizontalFallOff - horizontalAngle;
280+
var xyEpsilon = horizontalFallOff - horizontalAngle + epsilon;
280281
var xyLightDir = invLightDir - dot(invLightDir, up) * up;
281282
var xyDelta = delta - dot(delta, up) * up;
282283
var xyTheta = dot(xyDelta.normalize(), xyLightDir.normalize());
283284
var horizontalFalloff = saturate((xyTheta - horizontalAngle) / xyEpsilon);
284285

285-
var xzEpsilon = verticalFallOff - verticalAngle;
286+
var xzEpsilon = verticalFallOff - verticalAngle + epsilon;
286287
var xzLightDir = invLightDir - dot(invLightDir, right) * right;
287288
var xzDelta = delta - dot(delta, right) * right;
288289
var xzTheta = dot(xzDelta.normalize(), xzLightDir.normalize());

0 commit comments

Comments
 (0)