I apparently need a lot more cpu optimizations.

This commit is contained in:
Yggdrasil75
2025-12-02 14:55:54 -05:00
parent ccfac21758
commit 5ce672588d
2 changed files with 33 additions and 27 deletions

View File

@@ -117,11 +117,17 @@ std::vector<std::tuple<size_t, Vec3, Vec4>> pickSeeds(Grid3& grid, AnimationConf
for (int i = 0; i < config.numSeeds; ++i) { for (int i = 0; i < config.numSeeds; ++i) {
Vec3 point(xDist(gen), yDist(gen), zDist(gen)); Vec3 point(xDist(gen), yDist(gen), zDist(gen));
Vec4 color(colorDist(gen), colorDist(gen), colorDist(gen), 255); Vec4 color(colorDist(gen), colorDist(gen), colorDist(gen), 255);
bool foundValidPos;
int maxTries = 0;
while (!foundValidPos && maxTries < 10) {
maxTries++;
size_t id = grid.getPositionVec(point, 0.5); size_t id = grid.getPositionVec(point, 0.5);
if (id > 0) foundValidPos = true;
//size_t id = grid.getOrCreatePositionVec(point, 0.0, true); //size_t id = grid.getOrCreatePositionVec(point, 0.0, true);
grid.setColor(id, color); grid.setColor(id, color);
seeds.push_back(std::make_tuple(id,point, color)); seeds.push_back(std::make_tuple(id,point, color));
} }
}
std::cout << "picked seeds" << std::endl; std::cout << "picked seeds" << std::endl;
return seeds; return seeds;
} }
@@ -260,7 +266,7 @@ void mainLogic(const AnimationConfig& config, Shared& state, int gradnoise) {
} }
grid.setDefault(Vec4(0,0,0,0)); grid.setDefault(Vec4(0,0,0,0));
{ {
std:: lock_guard<std::mutex> lock(state.mutex); std::lock_guard<std::mutex> lock(state.mutex);
state.grid = grid; state.grid = grid;
state.hasNewFrame = true; state.hasNewFrame = true;
state.currentFrame = 0; state.currentFrame = 0;
@@ -278,7 +284,7 @@ void mainLogic(const AnimationConfig& config, Shared& state, int gradnoise) {
return; return;
} }
expandPixel(grid,config,seeds); //expandPixel(grid,config,seeds);
std::lock_guard<std::mutex> lock(state.mutex); std::lock_guard<std::mutex> lock(state.mutex);
state.grid = grid; state.grid = grid;

View File

@@ -357,13 +357,13 @@ public:
} }
} }
} }
throw std::out_of_range("Position not found"); return -1;
} else { } else {
auto results = getPositionVecRegion(pos, radius); auto results = getPositionVecRegion(pos, radius);
if (!results.empty()) { if (!results.empty()) {
return results[0]; // Return first found return results[0]; // Return first found
} }
throw std::out_of_range("No positions found in radius"); return -1;
} }
} }
@@ -441,7 +441,7 @@ public:
maxCorner.y = std::max(maxCorner.y, pos.y); maxCorner.y = std::max(maxCorner.y, pos.y);
maxCorner.z = std::max(maxCorner.z, pos.z); maxCorner.z = std::max(maxCorner.z, pos.z);
} }
std::cout << "bounding box: " << minCorner << ", " << maxCorner << std::endl; // std::cout << "bounding box: " << minCorner << ", " << maxCorner << std::endl;
return std::make_pair(minCorner, maxCorner); return std::make_pair(minCorner, maxCorner);
} }
@@ -472,8 +472,8 @@ public:
// regenpreventer = true; // regenpreventer = true;
std::cout << "Rendering 3D region: " << minCorner << " to " << maxCorner // std::cout << "Rendering 3D region: " << minCorner << " to " << maxCorner
<< " at resolution: " << res << " with view: " << View.origin << std::endl; // << " at resolution: " << res << " with view: " << View.origin << std::endl;
// Create output frame // Create output frame
frame outframe(outputWidth, outputHeight, outChannels); frame outframe(outputWidth, outputHeight, outChannels);
@@ -491,7 +491,7 @@ public:
countBuffer.reserve(bufferSize); countBuffer.reserve(bufferSize);
depthBuffer.reserve(bufferSize); depthBuffer.reserve(bufferSize);
std::cout << "Built buffers for " << bufferSize << " pixels" << std::endl; // std::cout << "Built buffers for " << bufferSize << " pixels" << std::endl;
// Pre-calculate view parameters // Pre-calculate view parameters
Vec3 viewDirection = View.direction; Vec3 viewDirection = View.direction;
@@ -508,7 +508,7 @@ public:
float xScale = outputWidth / width; float xScale = outputWidth / width;
float yScale = outputHeight / height; float yScale = outputHeight / height;
std::cout << "Processing voxels..." << std::endl; // std::cout << "Processing voxels..." << std::endl;
size_t voxelCount = 0; size_t voxelCount = 0;
// Process all voxels in the region // Process all voxels in the region
@@ -586,8 +586,8 @@ public:
} }
} }
std::cout << "Processed " << voxelCount << " voxels" << std::endl; // std::cout << "Processed " << voxelCount << " voxels" << std::endl;
std::cout << "Blending colors..." << std::endl; // std::cout << "Blending colors..." << std::endl;
// Prepare output buffer based on color format // Prepare output buffer based on color format
switch (outChannels) { switch (outChannels) {
@@ -685,7 +685,7 @@ public:
} }
} }
std::cout << "Rendering complete" << std::endl; // std::cout << "Rendering complete" << std::endl;
// regenpreventer = false; // regenpreventer = false;
return outframe; return outframe;