mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 19:36:45 +02:00
Merge pull request #10706 from zfox23/spectatorCamera_cauterizedFix
Show MyAvatar's head in the SpectatorCamera view!
This commit is contained in:
commit
eef4c9d747
5 changed files with 8 additions and 6 deletions
|
@ -71,9 +71,11 @@ public:
|
||||||
_cachedArgsPointer->_blitFramebuffer = args->_blitFramebuffer;
|
_cachedArgsPointer->_blitFramebuffer = args->_blitFramebuffer;
|
||||||
_cachedArgsPointer->_viewport = args->_viewport;
|
_cachedArgsPointer->_viewport = args->_viewport;
|
||||||
_cachedArgsPointer->_displayMode = args->_displayMode;
|
_cachedArgsPointer->_displayMode = args->_displayMode;
|
||||||
|
_cachedArgsPointer->_renderMode = args->_renderMode;
|
||||||
args->_blitFramebuffer = destFramebuffer;
|
args->_blitFramebuffer = destFramebuffer;
|
||||||
args->_viewport = glm::ivec4(0, 0, destFramebuffer->getWidth(), destFramebuffer->getHeight());
|
args->_viewport = glm::ivec4(0, 0, destFramebuffer->getWidth(), destFramebuffer->getHeight());
|
||||||
args->_displayMode = RenderArgs::MONO;
|
args->_displayMode = RenderArgs::MONO;
|
||||||
|
args->_renderMode = RenderArgs::RenderMode::SECONDARY_CAMERA_RENDER_MODE;
|
||||||
|
|
||||||
gpu::doInBatch(args->_context, [&](gpu::Batch& batch) {
|
gpu::doInBatch(args->_context, [&](gpu::Batch& batch) {
|
||||||
batch.disableContextStereo();
|
batch.disableContextStereo();
|
||||||
|
@ -106,6 +108,7 @@ public:
|
||||||
args->_viewport = cachedArgs->_viewport;
|
args->_viewport = cachedArgs->_viewport;
|
||||||
args->popViewFrustum();
|
args->popViewFrustum();
|
||||||
args->_displayMode = cachedArgs->_displayMode;
|
args->_displayMode = cachedArgs->_displayMode;
|
||||||
|
args->_renderMode = cachedArgs->_renderMode;
|
||||||
|
|
||||||
gpu::doInBatch(args->_context, [&](gpu::Batch& batch) {
|
gpu::doInBatch(args->_context, [&](gpu::Batch& batch) {
|
||||||
batch.restoreContextStereo();
|
batch.restoreContextStereo();
|
||||||
|
|
|
@ -1881,15 +1881,14 @@ void MyAvatar::preDisplaySide(RenderArgs* renderArgs) {
|
||||||
|
|
||||||
const float RENDER_HEAD_CUTOFF_DISTANCE = 0.3f;
|
const float RENDER_HEAD_CUTOFF_DISTANCE = 0.3f;
|
||||||
|
|
||||||
bool MyAvatar::cameraInsideHead() const {
|
bool MyAvatar::cameraInsideHead(const glm::vec3& cameraPosition) const {
|
||||||
const glm::vec3 cameraPosition = qApp->getCamera().getPosition();
|
|
||||||
return glm::length(cameraPosition - getHeadPosition()) < (RENDER_HEAD_CUTOFF_DISTANCE * getUniformScale());
|
return glm::length(cameraPosition - getHeadPosition()) < (RENDER_HEAD_CUTOFF_DISTANCE * getUniformScale());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MyAvatar::shouldRenderHead(const RenderArgs* renderArgs) const {
|
bool MyAvatar::shouldRenderHead(const RenderArgs* renderArgs) const {
|
||||||
bool defaultMode = renderArgs->_renderMode == RenderArgs::DEFAULT_RENDER_MODE;
|
bool defaultMode = renderArgs->_renderMode == RenderArgs::DEFAULT_RENDER_MODE;
|
||||||
bool firstPerson = qApp->getCamera().getMode() == CAMERA_MODE_FIRST_PERSON;
|
bool firstPerson = qApp->getCamera().getMode() == CAMERA_MODE_FIRST_PERSON;
|
||||||
bool insideHead = cameraInsideHead();
|
bool insideHead = cameraInsideHead(renderArgs->getViewFrustum().getPosition());
|
||||||
return !defaultMode || !firstPerson || !insideHead;
|
return !defaultMode || !firstPerson || !insideHead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -615,7 +615,7 @@ private:
|
||||||
float scale = 1.0f, bool isSoft = false,
|
float scale = 1.0f, bool isSoft = false,
|
||||||
bool allowDuplicates = false, bool useSaved = true) override;
|
bool allowDuplicates = false, bool useSaved = true) override;
|
||||||
|
|
||||||
bool cameraInsideHead() const;
|
bool cameraInsideHead(const glm::vec3& cameraPosition) const;
|
||||||
|
|
||||||
void updateEyeContactTarget(float deltaTime);
|
void updateEyeContactTarget(float deltaTime);
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ void CauterizedMeshPartPayload::updateTransformForCauterizedMesh(
|
||||||
|
|
||||||
void CauterizedMeshPartPayload::bindTransform(gpu::Batch& batch, const render::ShapePipeline::LocationsPointer locations, RenderArgs::RenderMode renderMode) const {
|
void CauterizedMeshPartPayload::bindTransform(gpu::Batch& batch, const render::ShapePipeline::LocationsPointer locations, RenderArgs::RenderMode renderMode) const {
|
||||||
// Still relying on the raw data from the model
|
// Still relying on the raw data from the model
|
||||||
bool useCauterizedMesh = (renderMode != RenderArgs::RenderMode::SHADOW_RENDER_MODE);
|
bool useCauterizedMesh = (renderMode != RenderArgs::RenderMode::SHADOW_RENDER_MODE && renderMode != RenderArgs::RenderMode::SECONDARY_CAMERA_RENDER_MODE);
|
||||||
if (useCauterizedMesh) {
|
if (useCauterizedMesh) {
|
||||||
ModelPointer model = _model.lock();
|
ModelPointer model = _model.lock();
|
||||||
if (model) {
|
if (model) {
|
||||||
|
|
|
@ -75,7 +75,7 @@ public:
|
||||||
|
|
||||||
class RenderArgs {
|
class RenderArgs {
|
||||||
public:
|
public:
|
||||||
enum RenderMode { DEFAULT_RENDER_MODE, SHADOW_RENDER_MODE, DIFFUSE_RENDER_MODE, NORMAL_RENDER_MODE, MIRROR_RENDER_MODE };
|
enum RenderMode { DEFAULT_RENDER_MODE, SHADOW_RENDER_MODE, DIFFUSE_RENDER_MODE, NORMAL_RENDER_MODE, MIRROR_RENDER_MODE, SECONDARY_CAMERA_RENDER_MODE };
|
||||||
enum DisplayMode { MONO, STEREO_MONITOR, STEREO_HMD };
|
enum DisplayMode { MONO, STEREO_MONITOR, STEREO_HMD };
|
||||||
enum DebugFlags {
|
enum DebugFlags {
|
||||||
RENDER_DEBUG_NONE = 0,
|
RENDER_DEBUG_NONE = 0,
|
||||||
|
|
Loading…
Reference in a new issue