From 0c0af812c27f1a6ce36599a37a74f6ef3a8e23ff Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Mon, 21 Sep 2015 14:16:56 -0700 Subject: [PATCH] CR comments --- interface/src/ui/overlays/Sphere3DOverlay.cpp | 6 +++++- .../entities-renderer/src/RenderableSphereEntityItem.cpp | 9 +++++++-- libraries/render-utils/src/Environment.cpp | 4 ---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/interface/src/ui/overlays/Sphere3DOverlay.cpp b/interface/src/ui/overlays/Sphere3DOverlay.cpp index c22748b214..0df09d25f6 100644 --- a/interface/src/ui/overlays/Sphere3DOverlay.cpp +++ b/interface/src/ui/overlays/Sphere3DOverlay.cpp @@ -18,6 +18,10 @@ QString const Sphere3DOverlay::TYPE = "sphere"; +// Sphere overlays should fit inside a cube of the specified dimensions, hence it needs to be a half unit sphere. +// However, the geometry cache renders a UNIT sphere, so we need to scale down. +static const float SPHERE_OVERLAY_SCALE = 0.5f; + Sphere3DOverlay::Sphere3DOverlay(const Sphere3DOverlay* Sphere3DOverlay) : Volume3DOverlay(Sphere3DOverlay) { @@ -40,7 +44,7 @@ void Sphere3DOverlay::render(RenderArgs* args) { batch->setModelTransform(Transform()); Transform transform = _transform; - transform.postScale(getDimensions() * 0.5f); + transform.postScale(getDimensions() * SPHERE_OVERLAY_SCALE); if (_isSolid) { DependencyManager::get()->renderSolidSphereInstance(*batch, transform, sphereColor); } else { diff --git a/libraries/entities-renderer/src/RenderableSphereEntityItem.cpp b/libraries/entities-renderer/src/RenderableSphereEntityItem.cpp index 1ff8dcbbbd..3cfc18046a 100644 --- a/libraries/entities-renderer/src/RenderableSphereEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableSphereEntityItem.cpp @@ -24,6 +24,11 @@ #include "../render-utils/simple_vert.h" #include "../render-utils/simple_frag.h" +// Sphere entities should fit inside a cube entity of the same size, so a sphere that has dimensions 1x1x1 +// is a half unit sphere. However, the geometry cache renders a UNIT sphere, so we need to scale down. +static const float SPHERE_ENTITY_SCALE = 0.5f; + + EntityItemPointer RenderableSphereEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { return std::make_shared(entityID, properties); } @@ -54,10 +59,10 @@ void RenderableSphereEntityItem::render(RenderArgs* args) { gpu::Batch& batch = *args->_batch; glm::vec4 sphereColor(toGlm(getXColor()), getLocalRenderAlpha()); Transform modelTransform = getTransformToCenter(); - modelTransform.postScale(0.5f); + modelTransform.postScale(SPHERE_ENTITY_SCALE); if (_procedural->ready()) { batch.setModelTransform(modelTransform); // use a transform with scale, rotation, registration point and translation - _procedural->prepare(batch, getDimensions() / 2.0f); + _procedural->prepare(batch, getDimensions()); auto color = _procedural->getColor(sphereColor); batch._glColor4f(color.r, color.g, color.b, color.a); DependencyManager::get()->renderSphere(batch); diff --git a/libraries/render-utils/src/Environment.cpp b/libraries/render-utils/src/Environment.cpp index 8a4e0a55a6..7fbd89acc1 100644 --- a/libraries/render-utils/src/Environment.cpp +++ b/libraries/render-utils/src/Environment.cpp @@ -197,10 +197,6 @@ bool Environment::findCapsulePenetration(const glm::vec3& start, const glm::vec3 } void Environment::renderAtmosphere(gpu::Batch& batch, ViewFrustum& viewFrustum, const EnvironmentData& data) { - // FIXME atmosphere rendering is broken in some way, - // should probably be replaced by a procedual skybox and put on the marketplace - //return; - glm::vec3 center = data.getAtmosphereCenter(); // transform the model transform to the center of our atmosphere