@@ -27,14 +27,16 @@ uint64_t cx = 0, cy = 0, cz = 0;
2727OMVoxelManager::OMVoxelManager (OMRenderer *renderer, OMRendererRenderTarget *resolveTarget, OMRendererTexture *tex,
2828 OMRendererTexture *texSec, std::shared_ptr<world::OMChunkManager<16 >> man,
2929 std::function<void ()> rec, OMVoxelHandler *handler,
30- std::function<uint32_t (uint32_t , uint64_t , uint64_t , uint64_t , int , int , int )> converter)
30+ std::function<uint32_t (uint32_t , uint64_t , uint64_t , uint64_t , int , int , int )> converter,
31+ OMVoxelColorManager *colorman)
3132 : logger(" OMVoxelManager" , this )
3233{
3334 this ->rec = rec;
3435 this ->renderer = renderer;
3536 this ->chunkManager = man;
3637 this ->voxelHandler = handler;
3738 this ->converter = converter;
39+ this ->colorManager = colorman;
3840
3941 delete compiler.handler ;
4042 compiler.handler = voxelHandler;
@@ -273,31 +275,9 @@ OMVoxelManager::OMVoxelManager(OMRenderer *renderer, OMRendererRenderTarget *res
273275 chunkoffs = renderer->allocateBuffer (UniformTexel, 3 * sizeof (float ));
274276 debugoffs = renderer->allocateBuffer (VertexData, 12 * 2 * 3 * sizeof (float ));
275277 skydisc = renderer->allocateBuffer (Uniform, sizeof (OMVoxelSkyDisc));
276- OMVoxelSkyDisc disc = {{0.470 , 0.654 , 1.0 }, 256 , {0.198 , 0.371 , 1.0 }, -16 };
277- skydisc->updateData (&disc);
278278 fogdata = renderer->allocateBuffer (Uniform, sizeof (float ) * 5 );
279- std::array<float , 5 > d = {0.0005 , 0.0006 , 0.470 , 0.654 , 1.0 };
280- fogdata->updateData (d.data ());
281279
282280 lightmapData = renderer->allocateBuffer (Uniform, sizeof (OMVoxelLightMap));
283- OMVoxelLightMap dayData = {
284- 1.0 , // SkyFactor
285- 1.0 , // BlockFactor
286- 0.0 , // NightVisionFactor
287- 0.0 , // DarknessScale
288- 0.0 , // BossOverlayWorldDarkeningFactor
289- 1.0 , // BrightnessFactor
290- 0 ,
291- 0 ,
292- {1.0 , 0.8 , 0.6 }, // BlockLightTint
293- 0 ,
294- {1.0 , 1.0 , 1.0 }, // SkyLightColor
295- 0 ,
296- {0.01 , 0.01 , 0.01 }, // AmbientColor
297- 0 ,
298- {0.7 , 0.7 , 0.7 } // NightVisionColor
299- };
300- lightmapData->updateData (&dayData);
301281
302282 textureAtlas = tex;
303283 textureAtlasSecondary = texSec;
@@ -362,6 +342,34 @@ void OMVoxelManager::unloadChunk(int i)
362342 voxelTranslucentComplexLayer->loadData (i, tcm);
363343}
364344
345+ auto OMVoxelManager::updateColor () -> void
346+ {
347+ OMVoxelSkyDisc disc = {colorManager->getSkyDiscColor (), 256 , colorManager->getSkyColor (), -16 };
348+ skydisc->updateData (&disc);
349+ std::array<float , 5 > d = {colorManager->getFogRange ().x , colorManager->getFogRange ().y , disc.diskCenterColor .r ,
350+ disc.diskCenterColor .g , disc.diskCenterColor .b };
351+ fogdata->updateData (d.data ());
352+
353+ OMVoxelLightMap dayData = {
354+ 1.0 , // SkyFactor
355+ 1.0 , // BlockFactor
356+ 0.0 , // NightVisionFactor
357+ 0.0 , // DarknessScale
358+ 0.0 , // BossOverlayWorldDarkeningFactor
359+ 1.0 , // BrightnessFactor
360+ 0 ,
361+ 0 ,
362+ colorManager->getBlockTint (), // BlockLightTint
363+ 0 ,
364+ colorManager->getSkyLightColor (), // SkyLightColor
365+ 0 ,
366+ {0.01 , 0.01 , 0.01 }, // AmbientColor
367+ 0 ,
368+ {0.7 , 0.7 , 0.7 } // NightVisionColor
369+ };
370+ lightmapData->updateData (&dayData);
371+ }
372+
365373auto OMVoxelManager::update (basics::OMCamera &camera) -> void
366374{
367375 auto cc = camera.getPosRaw ();
@@ -384,6 +392,8 @@ auto OMVoxelManager::update(basics::OMCamera &camera) -> void
384392 pp4 - camera.getPosRaw (), pp6 - camera.getPosRaw (), pp4 - camera.getPosRaw (), pp7 - camera.getPosRaw (),
385393 }}.data ());
386394
395+ updateColor ();
396+
387397 if (chunkManager->numChunks ())
388398 {
389399 std::vector<glm::vec3> offs = {};
0 commit comments