Unified · Split
| @@ -520,20 +520,18 @@ void Avatar::renderBody(RenderMode renderMode, bool postLighting, float glowLeve · 519 unmodified lines | ||
| 520 | 520 | renderAttachments(renderMode); |
| 521 | 521 | } |
| 522 | 522 | } |
| 523 | − if (!postLighting) { | |
| 524 | − getHead()->render(1.0f, modelRenderMode); | |
| 523 | + getHead()->render(1.0f, modelRenderMode, postLighting); | |
| 525 | 524 | |
| 526 | − if (Menu::getInstance()->isOptionChecked(MenuOption::StringHair)) { | |
| 527 | − // Render Hair | |
| 528 | − glPushMatrix(); | |
| 529 | − glm::vec3 headPosition = getHead()->getPosition(); | |
| 530 | − glTranslatef(headPosition.x, headPosition.y, headPosition.z); | |
| 531 | − const glm::quat& rotation = getHead()->getFinalOrientationInWorldFrame(); | |
| 532 | − glm::vec3 axis = glm::axis(rotation); | |
| 533 | − glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z); | |
| 534 | − _hair.render(); | |
| 535 | − glPopMatrix(); | |
| 536 | − } | |
| 525 | + if (!postLighting && Menu::getInstance()->isOptionChecked(MenuOption::StringHair)) { | |
| 526 | + // Render Hair | |
| 527 | + glPushMatrix(); | |
| 528 | + glm::vec3 headPosition = getHead()->getPosition(); | |
| 529 | + glTranslatef(headPosition.x, headPosition.y, headPosition.z); | |
| 530 | + const glm::quat& rotation = getHead()->getFinalOrientationInWorldFrame(); | |
| 531 | + glm::vec3 axis = glm::axis(rotation); | |
| 532 | + glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z); | |
| 533 | + _hair.render(); | |
| 534 | + glPopMatrix(); | |
| 537 | 535 | } |
| 538 | 536 | } |
| 539 | 537 | |
| @@ -211,17 +211,16 @@ void Head::relaxLean(float deltaTime) { · 210 unmodified lines | ||
| 211 | 211 | _deltaLeanForward *= relaxationFactor; |
| 212 | 212 | } |
| 213 | 213 | |
| 214 | −void Head::render(float alpha, Model::RenderMode mode) { | |
| 215 | − _faceModel.render(alpha, mode); | |
| 216 | − if (_renderLookatVectors && mode != Model::SHADOW_RENDER_MODE) { | |
| 217 | − Application::getInstance()->getDeferredLightingEffect()->addPostLightingRenderable(this); | |
| 214 | +void Head::render(float alpha, Model::RenderMode mode, bool postLighting) { | |
| 215 | + if (postLighting) { | |
| 216 | + if (_renderLookatVectors) { | |
| 217 | + renderLookatVectors(_leftEyePosition, _rightEyePosition, getCorrectedLookAtPosition()); | |
| 218 | + } | |
| 219 | + } else { | |
| 220 | + _faceModel.render(alpha, mode); | |
| 218 | 221 | } |
| 219 | 222 | } |
| 220 | 223 | |
| 221 | −void Head::renderPostLighting() { | |
| 222 | − renderLookatVectors(_leftEyePosition, _rightEyePosition, getCorrectedLookAtPosition()); | |
| 223 | −} | |
| 224 | − | |
| 225 | 224 | void Head::setScale (float scale) { |
| 226 | 225 | if (_scale == scale) { |
| 227 | 226 | return; |
| @@ -23,7 +23,6 @@ · 22 unmodified lines | ||
| 23 | 23 | #include "FaceModel.h" |
| 24 | 24 | #include "InterfaceConfig.h" |
| 25 | 25 | #include "world.h" |
| 26 | −#include "renderer/DeferredLightingEffect.h" | |
| 27 | 26 | |
| 28 | 27 | enum eyeContactTargets { |
| 29 | 28 | LEFT_EYE, |
| @@ -36,15 +35,14 @@ const float EYE_EAR_GAP = 0.08f; · 6 unmodified lines | ||
| 36 | 35 | class Avatar; |
| 37 | 36 | class ProgramObject; |
| 38 | 37 | |
| 39 | −class Head : public HeadData, public PostLightingRenderable { | |
| 38 | +class Head : public HeadData { | |
| 40 | 39 | public: |
| 41 | 40 | Head(Avatar* owningAvatar); |
| 42 | 41 | |
| 43 | 42 | void init(); |
| 44 | 43 | void reset(); |
| 45 | 44 | void simulate(float deltaTime, bool isMine, bool billboard = false); |
| 46 | − void render(float alpha, Model::RenderMode mode); | |
| 47 | − virtual void renderPostLighting(); | |
| 45 | + void render(float alpha, Model::RenderMode mode, bool postLighting); | |
| 48 | 46 | void setScale(float scale); |
| 49 | 47 | void setPosition(glm::vec3 position) { _position = position; } |
| 50 | 48 | void setAverageLoudness(float averageLoudness) { _averageLoudness = averageLoudness; } |
| @@ -1147,20 +1147,18 @@ void MyAvatar::renderBody(RenderMode renderMode, bool postLighting, float glowLe · 1146 unmodified lines | ||
| 1147 | 1147 | const Camera *camera = Application::getInstance()->getCamera(); |
| 1148 | 1148 | const glm::vec3 cameraPos = camera->getPosition() + (camera->getRotation() * glm::vec3(0.0f, 0.0f, 1.0f)) * camera->getDistance(); |
| 1149 | 1149 | if (shouldRenderHead(cameraPos, renderMode)) { |
| 1150 | − if (!postLighting) { | |
| 1151 | − getHead()->render(1.0f, modelRenderMode); | |
| 1150 | + getHead()->render(1.0f, modelRenderMode, postLighting); | |
| 1152 | 1151 | |
| 1153 | − if (Menu::getInstance()->isOptionChecked(MenuOption::StringHair)) { | |
| 1154 | − // Render Hair | |
| 1155 | − glPushMatrix(); | |
| 1156 | − glm::vec3 headPosition = getHead()->getPosition(); | |
| 1157 | − glTranslatef(headPosition.x, headPosition.y, headPosition.z); | |
| 1158 | − const glm::quat& rotation = getHead()->getFinalOrientationInWorldFrame(); | |
| 1159 | − glm::vec3 axis = glm::axis(rotation); | |
| 1160 | − glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z); | |
| 1161 | − _hair.render(); | |
| 1162 | − glPopMatrix(); | |
| 1163 | − } | |
| 1152 | + if (!postLighting && Menu::getInstance()->isOptionChecked(MenuOption::StringHair)) { | |
| 1153 | + // Render Hair | |
| 1154 | + glPushMatrix(); | |
| 1155 | + glm::vec3 headPosition = getHead()->getPosition(); | |
| 1156 | + glTranslatef(headPosition.x, headPosition.y, headPosition.z); | |
| 1157 | + const glm::quat& rotation = getHead()->getFinalOrientationInWorldFrame(); | |
| 1158 | + glm::vec3 axis = glm::axis(rotation); | |
| 1159 | + glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z); | |
| 1160 | + _hair.render(); | |
| 1161 | + glPopMatrix(); | |
| 1164 | 1162 | } |
| 1165 | 1163 | } |
| 1166 | 1164 | if (postLighting) { |