Repe [T3DU] Update - 31f26d171bba0355ce2a77031e3aad4c64dbc7e9

This commit is contained in:
2026-09-04 10:46:13 -07:00
parent c915312901
commit 0460b9d587
482 changed files with 27797 additions and 3226 deletions

View File

@ -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