forked from LeenkxTeam/LNXSDK
Repe [T3DU] Update - 31f26d171bba0355ce2a77031e3aad4c64dbc7e9
This commit is contained in:
@ -11,8 +11,6 @@ class Inc {
|
||||
static var path: RenderPath;
|
||||
public static var superSample = 1.0;
|
||||
|
||||
static var pointIndex = 0;
|
||||
static var spotIndex = 0;
|
||||
static var lastFrame = -1;
|
||||
|
||||
#if lnx_shadowmap_atlas
|
||||
@ -437,37 +435,43 @@ class Inc {
|
||||
path.bindTarget(n, n);
|
||||
#end
|
||||
}
|
||||
for (i in 0...pointIndex) {
|
||||
var n = "shadowMapPoint[" + i + "]";
|
||||
path.bindTarget(n, n);
|
||||
#if rp_shadowmap_transparent
|
||||
var n = "shadowMapPointTransparent[" + i + "]";
|
||||
path.bindTarget(n, n);
|
||||
#end
|
||||
}
|
||||
for (i in 0...spotIndex) {
|
||||
var n = "shadowMapSpot[" + i + "]";
|
||||
path.bindTarget(n, n);
|
||||
#if rp_shadowmap_transparent
|
||||
var n = "shadowMapSpotTransparent[" + i + "]";
|
||||
path.bindTarget(n, n);
|
||||
#end
|
||||
var lightIndex = 0;
|
||||
for (l in iron.Scene.active.lights) {
|
||||
if (iron.object.LightObject.discardLightCulled(l)) continue;
|
||||
|
||||
if (l.data.raw.type == "point") {
|
||||
var n = "shadowMapPoint[" + lightIndex + "]";
|
||||
path.bindTarget(n, n);
|
||||
#if rp_shadowmap_transparent
|
||||
var n = "shadowMapPointTransparent[" + lightIndex + "]";
|
||||
path.bindTarget(n, n);
|
||||
#end
|
||||
}
|
||||
else if (l.data.raw.type == "spot" || l.data.raw.type == "area") {
|
||||
var n = "shadowMapSpot[" + lightIndex + "]";
|
||||
path.bindTarget(n, n);
|
||||
#if rp_shadowmap_transparent
|
||||
var n = "shadowMapSpotTransparent[" + lightIndex + "]";
|
||||
path.bindTarget(n, n);
|
||||
#end
|
||||
}
|
||||
lightIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
static function shadowMapName(light: LightObject, transparent: Bool): String {
|
||||
static function shadowMapName(light: LightObject, transparent: Bool, index: Int): String {
|
||||
switch (light.data.raw.type) {
|
||||
case "sun":
|
||||
return transparent ? "shadowMapTransparent" : "shadowMap";
|
||||
case "point":
|
||||
return transparent ? "shadowMapPointTransparent[" + pointIndex + "]" : "shadowMapPoint[" + pointIndex + "]";
|
||||
return transparent ? "shadowMapPointTransparent[" + index + "]" : "shadowMapPoint[" + index + "]";
|
||||
default:
|
||||
return transparent ? "shadowMapSpotTransparent[" + spotIndex + "]" : "shadowMapSpot[" + spotIndex + "]";
|
||||
return transparent ? "shadowMapSpotTransparent[" + index + "]" : "shadowMapSpot[" + index + "]";
|
||||
}
|
||||
}
|
||||
|
||||
static function getShadowMap(l: iron.object.LightObject, transparent: Bool): String {
|
||||
var target = shadowMapName(l, transparent);
|
||||
static function getShadowMap(l: iron.object.LightObject, transparent: Bool, index: Int): String {
|
||||
var target = shadowMapName(l, transparent, index);
|
||||
var rt = path.renderTargets.get(target);
|
||||
// Create shadowmap on the fly
|
||||
if (rt == null) {
|
||||
@ -510,14 +514,13 @@ class Inc {
|
||||
lastFrame = RenderPath.active.frame;
|
||||
#end
|
||||
|
||||
pointIndex = 0;
|
||||
spotIndex = 0;
|
||||
var lightIndex = 0;
|
||||
for (l in iron.Scene.active.lights) {
|
||||
if (!l.visible) continue;
|
||||
if (l.data.raw.type == "sun" && l != RenderPath.active.sun) continue;
|
||||
|
||||
path.light = l;
|
||||
var shadowmap = Inc.getShadowMap(l, false);
|
||||
var shadowmap = Inc.getShadowMap(l, false, lightIndex);
|
||||
var faces = l.data.raw.shadowmap_cube ? 6 : 1;
|
||||
for (i in 0...faces) {
|
||||
if (faces > 1) path.currentFace = i;
|
||||
@ -529,19 +532,19 @@ class Inc {
|
||||
}
|
||||
path.currentFace = -1;
|
||||
|
||||
if (l.data.raw.type == "point") pointIndex++;
|
||||
else if (l.data.raw.type == "spot" || l.data.raw.type == "area") spotIndex++;
|
||||
if (!iron.object.LightObject.discardLightCulled(l)) {
|
||||
lightIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
#if rp_shadowmap_transparent
|
||||
pointIndex = 0;
|
||||
spotIndex = 0;
|
||||
lightIndex = 0;
|
||||
for (l in iron.Scene.active.lights) {
|
||||
if (!l.visible) continue;
|
||||
if (l.data.raw.type == "sun" && l != RenderPath.active.sun) continue;
|
||||
|
||||
path.light = l;
|
||||
var shadowmap_transparent = Inc.getShadowMap(l, true);
|
||||
var shadowmap_transparent = Inc.getShadowMap(l, true, lightIndex);
|
||||
var faces = l.data.raw.shadowmap_cube ? 6 : 1;
|
||||
for (i in 0...faces) {
|
||||
if (faces > 1) path.currentFace = i;
|
||||
@ -553,8 +556,9 @@ class Inc {
|
||||
}
|
||||
path.currentFace = -1;
|
||||
|
||||
if (l.data.raw.type == "point") pointIndex++;
|
||||
else if (l.data.raw.type == "spot" || l.data.raw.type == "area") spotIndex++;
|
||||
if (!iron.object.LightObject.discardLightCulled(l)) {
|
||||
lightIndex++;
|
||||
}
|
||||
}
|
||||
#end
|
||||
#end // rp_shadowmap
|
||||
|
||||
Reference in New Issue
Block a user