From 00e04df25a9ee8059b188fa9b402ee2939f32adf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Sun, 15 Dec 2013 13:59:21 +0100 Subject: [PATCH] Fixed atmosphere previews --- src/render/preview/AtmosphereColorPreviewRenderer.cpp | 7 +++++-- src/render/software/RenderArea.cpp | 6 +++--- src/render/software/SoftwareRenderer.cpp | 6 ++++++ src/render/software/SoftwareRenderer.h | 5 +++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/render/preview/AtmosphereColorPreviewRenderer.cpp b/src/render/preview/AtmosphereColorPreviewRenderer.cpp index c51ca01..22c32d1 100644 --- a/src/render/preview/AtmosphereColorPreviewRenderer.cpp +++ b/src/render/preview/AtmosphereColorPreviewRenderer.cpp @@ -151,6 +151,9 @@ AtmosphereColorPreviewRenderer::AtmosphereColorPreviewRenderer(AtmosphereDefinit definition(definition), heading(heading) { getScenery()->getCamera()->setLocation(Vector3(0.0, 7.0, 0.0)); + render_camera->setLocation(Vector3(0.0, 7.0, 0.0)); + + disableClouds(); } void AtmosphereColorPreviewRenderer::bindEvent(BasePreview* preview) @@ -166,8 +169,8 @@ void AtmosphereColorPreviewRenderer::updateEvent() Color AtmosphereColorPreviewRenderer::getColor2D(double x, double y, double) { - Vector3 eye = {0.0, 7.0, 0.0}; - Vector3 direction = {x, -y, -1.0}; + Vector3 eye(0.0, 7.0, 0.0); + Vector3 direction = Vector3(x, -y, -1.0).normalize(); Vector3 hit, normal; Matrix4 rotation; diff --git a/src/render/software/RenderArea.cpp b/src/render/software/RenderArea.cpp index 0f37f46..f30ed11 100644 --- a/src/render/software/RenderArea.cpp +++ b/src/render/software/RenderArea.cpp @@ -567,8 +567,8 @@ void RenderArea::pushTriangle(const Vector3 &pixel1, const Vector3 &pixel2, cons point3.callback = point1.callback; /* Prepare scanlines */ + // TODO Don't create scanlines for each triangles (one by thread is more appropriate) RenderScanlines scanlines; - int x; int width = params.width * params.antialias; scanlines.left = width; scanlines.right = -1; @@ -586,8 +586,8 @@ void RenderArea::pushTriangle(const Vector3 &pixel1, const Vector3 &pixel2, cons lock->release(); /* Free scalines */ - free(scanlines.up); - free(scanlines.down); + delete[] scanlines.up; + delete[] scanlines.down; } Color RenderArea::getPixel(int x, int y) diff --git a/src/render/software/SoftwareRenderer.cpp b/src/render/software/SoftwareRenderer.cpp index 4241f0d..c9e1c8f 100644 --- a/src/render/software/SoftwareRenderer.cpp +++ b/src/render/software/SoftwareRenderer.cpp @@ -7,6 +7,7 @@ #include "AtmosphereDefinition.h" #include "AtmosphereResult.h" #include "CloudsRenderer.h" +#include "CloudsDefinition.h" #include "TerrainRenderer.h" #include "TexturesRenderer.h" #include "WaterRenderer.h" @@ -119,6 +120,11 @@ void SoftwareRenderer::rasterize() sky.rasterize(); } +void SoftwareRenderer::disableClouds() +{ + scenery->getClouds()->clear(); +} + void SoftwareRenderer::setPreviewCallbacks(RenderArea::RenderCallbackStart start, RenderArea::RenderCallbackDraw draw, RenderArea::RenderCallbackUpdate update) { render_area->setPreviewCallbacks(start, draw, update); diff --git a/src/render/software/SoftwareRenderer.h b/src/render/software/SoftwareRenderer.h index 53c114a..fa66c5e 100644 --- a/src/render/software/SoftwareRenderer.h +++ b/src/render/software/SoftwareRenderer.h @@ -64,6 +64,11 @@ public: */ virtual void rasterize(); + /*! + * \brief Disable the clouds feature. + */ + void disableClouds(); + void setPreviewCallbacks(RenderArea::RenderCallbackStart start, RenderArea::RenderCallbackDraw draw, RenderArea::RenderCallbackUpdate update); void start(RenderArea::RenderParams params); void interrupt();