|
@@ -21,6 +21,10 @@ shaders(shaders), framebuffers(fb), size(size), renderSettings(renderSettings),
|
|
|
}
|
|
|
|
|
|
void Engine::renderTick(float lag, const Game& game) {
|
|
|
+ if(renderSettings.dirtyFactor) {
|
|
|
+ framebuffers.setFactor(renderSettings.factor);
|
|
|
+ }
|
|
|
+
|
|
|
updateWorldProjection();
|
|
|
updateWorldView();
|
|
|
|
|
@@ -29,7 +33,6 @@ void Engine::renderTick(float lag, const Game& game) {
|
|
|
}
|
|
|
renderWorld(lag, game);
|
|
|
if(renderSettings.ssao) {
|
|
|
-
|
|
|
renderSSAO();
|
|
|
}
|
|
|
renderPostWorld();
|
|
@@ -76,8 +79,8 @@ void Engine::renderSSAO() {
|
|
|
rProj.translate(0.5f, 0.5f, 0.5f).scale(0.5f).mul(worldProj);
|
|
|
|
|
|
shaders.ssao.setMatrix("proj", rProj.getValues());
|
|
|
- shaders.ssao.setInt("width", size.width);
|
|
|
- shaders.ssao.setInt("height", size.height);
|
|
|
+ shaders.ssao.setInt("width", size.width * renderSettings.factor);
|
|
|
+ shaders.ssao.setInt("height", size.height * renderSettings.factor);
|
|
|
framebuffers.world.bindPositionTexture(0);
|
|
|
framebuffers.world.bindNormalTexture(1);
|
|
|
framebuffers.world.bindColorTexture(2);
|
|
@@ -93,7 +96,7 @@ void Engine::renderSSAO() {
|
|
|
}
|
|
|
|
|
|
void Engine::renderPostWorld() {
|
|
|
- GLWrapper::prepareMainFramebuffer();
|
|
|
+ framebuffers.antialias.bind();
|
|
|
shaders.postWorld.use();
|
|
|
framebuffers.world.bindColorTexture(0);
|
|
|
framebuffers.ssaoBlur.bindRedTexture(1);
|
|
@@ -103,6 +106,13 @@ void Engine::renderPostWorld() {
|
|
|
shaders.postWorld.setInt("shadows", renderSettings.shadows);
|
|
|
shaders.postWorld.setFloat("bump", renderSettings.bump);
|
|
|
rectangle.draw();
|
|
|
+
|
|
|
+ GLWrapper::prepareMainFramebuffer();
|
|
|
+ glViewport(0, 0, size.width, size.height);
|
|
|
+ shaders.antialias.use();
|
|
|
+ shaders.antialias.setInt("radius", renderSettings.factor);
|
|
|
+ framebuffers.antialias.bindColorTexture(0);
|
|
|
+ rectangle.draw();
|
|
|
}
|
|
|
|
|
|
void Engine::renderTextOverlay(float lag, const Game& game) {
|
|
@@ -126,7 +136,6 @@ void Engine::updateWorldProjection() {
|
|
|
frustum.setProjection(worldProj, size.width, size.height);
|
|
|
|
|
|
if(!renderSettings.shadows) {
|
|
|
-
|
|
|
return;
|
|
|
}
|
|
|
worldShadowProj.setToIdentity();
|