Skip to content
This repository has been archived by the owner on Dec 2, 2024. It is now read-only.

Commit

Permalink
bump !
Browse files Browse the repository at this point in the history
  • Loading branch information
e2002e committed Mar 31, 2024
1 parent 6a791e0 commit f0ac2db
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 12 deletions.
37 changes: 35 additions & 2 deletions Sources/iron/RenderPath.hx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class RenderPath {
var lastFrameTime = 0.0;
var loading = 0;
var cachedShaderContexts: Map<String, CachedShaderContext> = new Map();
var depthBuffers: Array<{name: String, format: String}> = [];
public var depthBuffers: Array<{name: String, format: String}> = [];
var additionalTargets: Array<kha.Canvas>;

#if rp_voxels
Expand Down Expand Up @@ -112,6 +112,34 @@ class RenderPath {
numTrisShadow = 0;
#end

#if (rp_voxels != "Off")
armory.renderpath.RenderPathCreator.clipmapLevel = (armory.renderpath.RenderPathCreator.clipmapLevel + 1) % Main.voxelgiClipmapCount;
var clipmap = armory.renderpath.RenderPathCreator.clipmaps[armory.renderpath.RenderPathCreator.clipmapLevel];

clipmap.voxelSize = armory.renderpath.RenderPathCreator.clipmaps[0].voxelSize * Math.pow(2.0, armory.renderpath.RenderPathCreator.clipmapLevel);

var texelSize = 2.0 * clipmap.voxelSize;
var camera = iron.Scene.active.camera;
var center = new iron.math.Vec3(
Math.floor(camera.transform.worldx() / texelSize) * texelSize,
Math.floor(camera.transform.worldy() / texelSize) * texelSize,
Math.floor(camera.transform.worldz() / texelSize) * texelSize
);

clipmap.offset_prev.x = Std.int((clipmap.center.x - center.x) / texelSize);
clipmap.offset_prev.y = Std.int((clipmap.center.y - center.y) / texelSize);
clipmap.offset_prev.z = Std.int((clipmap.center.z - center.z) / texelSize);
clipmap.center = center;

var res = armory.renderpath.Inc.getVoxelRes();
var extents = new iron.math.Vec3(clipmap.voxelSize * res, clipmap.voxelSize * res, clipmap.voxelSize * res);
if (clipmap.extents.x != extents.x || clipmap.extents.y != extents.y || clipmap.extents.z != extents.z)
{
armory.renderpath.RenderPathCreator.pre_clear = true;
}
clipmap.extents = extents;
#end

// Render to screen or probe
var cam = Scene.active.camera;
isProbePlanar = cam != null && cam.renderTarget != null;
Expand Down Expand Up @@ -534,7 +562,8 @@ class RenderPath {
break;
}

if (nodepth != null) {
if (nodepth != null && nodepth.raw.is_image != true) {
trace(nodepth.raw);
rt.image.setDepthStencilFrom(nodepth.image);
}
}
Expand All @@ -553,6 +582,10 @@ class RenderPath {
rt.image.setDepthStencilFrom(depthToRenderTarget.get(rt.depthStencilFrom).image);
}
}

#if (rp_voxels != "Off")
armory.renderpath.RenderPathCreator.res_pre_clear = true;
#end
}

public function createRenderTarget(t: RenderTargetRaw): RenderTarget {
Expand Down
4 changes: 4 additions & 0 deletions Sources/iron/object/LightObject.hx
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,8 @@ class LightObject extends Object {
return 8;
#elseif (rp_max_lights == 16)
return 16;
#elseif (rp_max_lights == 24)
return 24;
#elseif (rp_max_lights == 32)
return 32;
#elseif (rp_max_lights == 64)
Expand All @@ -648,6 +650,8 @@ class LightObject extends Object {
return 8;
#elseif (rp_max_lights_cluster == 16)
return 16;
#elseif (rp_max_lights_cluster == 24)
return 24;
#elseif (rp_max_lights_cluster == 32)
return 32;
#elseif (rp_max_lights_cluster == 64)
Expand Down
4 changes: 2 additions & 2 deletions Sources/iron/object/MeshObject.hx
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ class MeshObject extends Object {
if (force_context != null && force_context != context) return setCulled(isShadow, true);

#if (!arm_voxelgi_revox) // No revox - do not voxelize moving objects
if (context == "voxel" && raw != null && raw.mobile == true) return setCulled(isShadow, true);
//if (context == "voxel" && raw != null && raw.mobile == true) return setCulled(isShadow, true);
#end

return setCulled(isShadow, false);
Expand All @@ -185,7 +185,7 @@ class MeshObject extends Object {
// particleSystems for update, particleOwner for render
if (particleSystems != null || particleOwner != null) radiusScale *= 1000;
#end
if (context == "voxel") radiusScale *= 100;
//if (context == "voxel") radiusScale *= 100;
if (data.geom.instanced) radiusScale *= 100;
var isShadow = context == "shadowmap";
var frustumPlanes = isShadow ? light.frustumPlanes : camera.frustumPlanes;
Expand Down
14 changes: 8 additions & 6 deletions Sources/iron/object/Tilesheet.hx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class Tilesheet {
}
setFrame(action.start);
paused = false;
time = 0.0;
}

public function pause() {
Expand Down Expand Up @@ -100,16 +101,17 @@ class Tilesheet {
function setFrame(f: Int) {
frame = f;

var tx = frame % raw.tilesx;
var ty = Std.int(frame / raw.tilesx);
tileX = tx * (1 / raw.tilesx);
tileY = ty * (1 / raw.tilesy);

// Action end
if (frame >= action.end && action.start < action.end) {
if (frame > action.end && action.start < action.end) {
if (onActionComplete != null) onActionComplete();
if (action.loop) setFrame(action.start);
else paused = true;
return;
}

var tx = frame % raw.tilesx;
var ty = Std.int(frame / raw.tilesx);
tileX = tx * (1 / raw.tilesx);
tileY = ty * (1 / raw.tilesy);
}
}
9 changes: 7 additions & 2 deletions Sources/iron/object/Uniforms.hx
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,14 @@ class Uniforms {
}

if (isImage) {
g.setImageTexture(context.textureUnits[j], rt.image); // image2D/3D
// Multiple voxel volumes, always set params
g.setTexture3DParameters(context.textureUnits[j], TextureAddressing.Clamp, TextureAddressing.Clamp, TextureAddressing.Clamp, TextureFilter.LinearFilter, TextureFilter.PointFilter, MipMapFilter.LinearMipFilter);
g.setImageTexture(context.textureUnits[j], rt.image); // image2D/3D
if (rt.raw.depth <= 1) {
g.setTextureParameters(context.textureUnits[j], TextureAddressing.Clamp, TextureAddressing.Clamp, TextureFilter.LinearFilter, TextureFilter.LinearFilter, MipMapFilter.NoMipFilter);
}
else {
g.setTexture3DParameters(context.textureUnits[j], TextureAddressing.Clamp, TextureAddressing.Clamp, TextureAddressing.Clamp, TextureFilter.LinearFilter, TextureFilter.LinearFilter, MipMapFilter.LinearMipFilter);
}
paramsSet = true;
}
else if (rt.isCubeMap) {
Expand Down

0 comments on commit f0ac2db

Please sign in to comment.