summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLaG1924 <lag1924@gmail.com>2021-12-18 06:59:06 +0100
committerLaG1924 <lag1924@gmail.com>2021-12-18 06:59:06 +0100
commit3dc7e8aba4a07cc3c0d897b82af5a5951bde9991 (patch)
tree7361aa7f00026b2cd6749e73bbe2bfc4b10ebd69 /src
parentFixed SSAO low occlusion factor (diff)
downloadAltCraft-3dc7e8aba4a07cc3c0d897b82af5a5951bde9991.tar
AltCraft-3dc7e8aba4a07cc3c0d897b82af5a5951bde9991.tar.gz
AltCraft-3dc7e8aba4a07cc3c0d897b82af5a5951bde9991.tar.bz2
AltCraft-3dc7e8aba4a07cc3c0d897b82af5a5951bde9991.tar.lz
AltCraft-3dc7e8aba4a07cc3c0d897b82af5a5951bde9991.tar.xz
AltCraft-3dc7e8aba4a07cc3c0d897b82af5a5951bde9991.tar.zst
AltCraft-3dc7e8aba4a07cc3c0d897b82af5a5951bde9991.zip
Diffstat (limited to 'src')
-rw-r--r--src/AssetManager.cpp1
-rw-r--r--src/AssetManager.hpp1
-rw-r--r--src/RenderConfigs.cpp3
-rw-r--r--src/RenderConfigs.hpp2
-rw-r--r--src/RendererSectionData.cpp1
-rw-r--r--src/RendererSectionData.hpp3
-rw-r--r--src/RendererWorld.cpp3
7 files changed, 10 insertions, 4 deletions
diff --git a/src/AssetManager.cpp b/src/AssetManager.cpp
index ca68304..3e3f677 100644
--- a/src/AssetManager.cpp
+++ b/src/AssetManager.cpp
@@ -594,6 +594,7 @@ BlockFaces &AssetManager::GetBlockModelByBlockId(BlockId block) {
blockFaces.transform = glm::mat4(1.0);
blockFaces.faces = assetModel->blockModel.parsedFaces;
blockFaces.isBlock = assetModel->blockModel.IsBlock;
+ blockFaces.ambientOcclusion = assetModel->blockModel.AmbientOcclusion;
glm::mat4 transform = glm::mat4(1.0);
if (model.y != 0) {
diff --git a/src/AssetManager.hpp b/src/AssetManager.hpp
index 2bee47c..59fc851 100644
--- a/src/AssetManager.hpp
+++ b/src/AssetManager.hpp
@@ -48,6 +48,7 @@ struct BlockFaces {
glm::mat4 transform;
std::vector<ParsedFace> faces;
bool isBlock;
+ bool ambientOcclusion;
Vector faceDirectionVector[FaceDirection::none];
};
diff --git a/src/RenderConfigs.cpp b/src/RenderConfigs.cpp
index 43342bb..78b442d 100644
--- a/src/RenderConfigs.cpp
+++ b/src/RenderConfigs.cpp
@@ -183,7 +183,7 @@ Gbuffer::Gbuffer(size_t geomW, size_t geomH, size_t lightW, size_t lightH, int s
normalConf->SetMaxFilter(Gal::Filtering::Bilinear);
normal = gal->BuildTexture(normalConf);
- auto lightConf = gal->CreateTexture2DConfig(geomW, geomH, Gal::Format::R8G8);
+ auto lightConf = gal->CreateTexture2DConfig(geomW, geomH, Gal::Format::R8G8B8);
lightConf->SetMinFilter(Gal::Filtering::Bilinear);
lightConf->SetMaxFilter(Gal::Filtering::Bilinear);
light = gal->BuildTexture(lightConf);
@@ -221,6 +221,7 @@ Gbuffer::Gbuffer(size_t geomW, size_t geomH, size_t lightW, size_t lightH, int s
std::vector<std::pair<std::string_view, std::shared_ptr<Gal::Texture>>> ssaoTextures = {
{"normal", normal},
+ {"light", light},
{"depthStencil", depthStencil},
{"ssaoNoise", ssaoNoise},
};
diff --git a/src/RenderConfigs.hpp b/src/RenderConfigs.hpp
index d0adfce..9d1ffcd 100644
--- a/src/RenderConfigs.hpp
+++ b/src/RenderConfigs.hpp
@@ -96,7 +96,7 @@ class Gbuffer {
std::shared_ptr<Gal::Texture> depthStencil;
std::shared_ptr<Gal::Texture> color; //RGB - color
std::shared_ptr<Gal::Texture> normal; //RGB - normal
- std::shared_ptr<Gal::Texture> light; //R - faceLight, G - skyLight, B - unused
+ std::shared_ptr<Gal::Texture> light; //R - faceLight, G - skyLight, B - ssaoDepthMask
std::shared_ptr<Gal::Framebuffer> geomFramebuffer;
public:
diff --git a/src/RendererSectionData.cpp b/src/RendererSectionData.cpp
index 7e3d285..c7d922e 100644
--- a/src/RendererSectionData.cpp
+++ b/src/RendererSectionData.cpp
@@ -69,6 +69,7 @@ void AddFacesByBlockModel(RendererSectionData &data, const BlockFaces &model, co
vertexData.animations = face.frames;
vertexData.colors = face.color;
vertexData.lights = lightness;
+ vertexData.ambientOcclusion = model.ambientOcclusion ? 1.0f : 0.0f;
}
}
diff --git a/src/RendererSectionData.hpp b/src/RendererSectionData.hpp
index 0a80560..390200c 100644
--- a/src/RendererSectionData.hpp
+++ b/src/RendererSectionData.hpp
@@ -38,7 +38,8 @@ struct VertexData {
float animations;
glm::vec3 colors;
glm::vec2 lights;
- uint8_t padding[8];
+ float ambientOcclusion;
+ uint8_t padding[4];
};
struct RendererSectionData {
diff --git a/src/RendererWorld.cpp b/src/RendererWorld.cpp
index 7cbd45e..2ffb57f 100644
--- a/src/RendererWorld.cpp
+++ b/src/RendererWorld.cpp
@@ -463,7 +463,8 @@ void RendererWorld::PrepareRender(std::shared_ptr<Gal::Framebuffer> target, bool
{"animation", Gal::Type::Float, 1, 1},
{"color", Gal::Type::Vec3, 1, 1},
{"light", Gal::Type::Vec2, 1, 1},
- {"", Gal::Type::Uint8, 8, 1}
+ {"ambientOcclusion", Gal::Type::Float, 1, 1},
+ {"", Gal::Type::Uint8, 4, 1}
});
sectionsPipeline = gal->BuildPipeline(sectionsPLC);
}