From 00f3682bbee19058d6f39caa2d1390d36694362f Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 27 Feb 2018 14:09:31 -0800 Subject: [PATCH 1/9] NOT WORKING YET. --- .../render-utils/src/RenderPipelines.cpp | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 3fedae1778..6e3d3c85e7 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -490,7 +490,7 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip // Same thing but with Fade on addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withFade(), - skinModelFadeVertex, modelTranslucentFadePixel, batchSetter, itemSetter); + skinModelFadeDualQuatVertex, modelTranslucentFadePixel, batchSetter, itemSetter); addPipeline( Key::Builder().withMaterial().withSkinned().withDualQuatSkinned().withTranslucent().withTangents().withFade(), skinModelNormalMapFadeDualQuatVertex, modelTranslucentNormalMapFadePixel, batchSetter, itemSetter); @@ -521,10 +521,15 @@ void initForwardPipelines(ShapePlumber& plumber, const render::ShapePipeline::Ba // Vertex shaders auto modelVertex = model_vert::getShader(); auto modelNormalMapVertex = model_normal_map_vert::getShader(); + auto skinModelVertex = skin_model_vert::getShader(); auto skinModelNormalMapVertex = skin_model_normal_map_vert::getShader(); auto skinModelNormalMapFadeVertex = skin_model_normal_map_fade_vert::getShader(); + auto skinModelDualQuatVertex = skin_model_dq_vert::getShader(); + auto skinModelNormalMapDualQuatVertex = skin_model_normal_map_dq_vert::getShader(); + auto skinModelNormalMapFadeDualQuatVertex = skin_model_normal_map_fade_dq_vert::getShader(); + // Pixel shaders auto modelPixel = forward_model_frag::getShader(); auto modelUnlitPixel = forward_model_unlit_frag::getShader(); @@ -568,6 +573,22 @@ void initForwardPipelines(ShapePlumber& plumber, const render::ShapePipeline::Ba Key::Builder().withMaterial().withSkinned().withTangents().withFade(), skinModelNormalMapFadeVertex, modelNormalMapFadePixel, batchSetter, itemSetter, nullptr, nullptr); + // Dual Quaternion + addPipeline( + Key::Builder().withMaterial().withSkinned(), + skinModelDualQuatVertex, modelPixel, nullptr, nullptr); + addPipeline( + Key::Builder().withMaterial().withSkinned().withTangents(), + skinModelNormalMapDualQuatVertex, modelNormalMapPixel, nullptr, nullptr); + addPipeline( + Key::Builder().withMaterial().withSkinned(), + skinModelDualQuatVertex, modelSpecularMapPixel, nullptr, nullptr); + addPipeline( + Key::Builder().withMaterial().withSkinned().withTangents().withSpecular(), + skinModelNormalMapDualQuatVertex, modelNormalSpecularMapPixel, nullptr, nullptr); + addPipeline( + Key::Builder().withMaterial().withSkinned().withTangents().withFade(), + skinModelNormalMapFadeDualQuatVertex, modelNormalMapFadePixel, batchSetter, itemSetter, nullptr, nullptr); } void addPlumberPipeline(ShapePlumber& plumber, From f52f146db5f70832d4ce6fb8c16beff7bcfc4012 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 27 Feb 2018 16:28:46 -0800 Subject: [PATCH 2/9] WIP. --- .../render-utils/src/RenderPipelines.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 6e3d3c85e7..6264d82187 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -515,13 +515,22 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip addPipeline( Key::Builder().withSkinned().withDepthOnly().withFade(), skinModelShadowFadeVertex, modelShadowFadePixel, batchSetter, itemSetter); + + // Now repeat for dual quaternion + // Depth-only + addPipeline( + Key::Builder().withSkinned().withDepthOnly().withDualQuatSkinned(), + skinModelShadowDualQuatVertex, modelShadowPixel, nullptr, nullptr); + // Same thing but with Fade on + addPipeline( + Key::Builder().withSkinned().withDepthOnly().withFade().withDualQuatSkinned(), + skinModelShadowDualQuatVertex, modelShadowFadePixel, batchSetter, itemSetter); } void initForwardPipelines(ShapePlumber& plumber, const render::ShapePipeline::BatchSetter& batchSetter, const render::ShapePipeline::ItemSetter& itemSetter) { // Vertex shaders auto modelVertex = model_vert::getShader(); auto modelNormalMapVertex = model_normal_map_vert::getShader(); - auto skinModelVertex = skin_model_vert::getShader(); auto skinModelNormalMapVertex = skin_model_normal_map_vert::getShader(); auto skinModelNormalMapFadeVertex = skin_model_normal_map_fade_vert::getShader(); @@ -575,19 +584,19 @@ void initForwardPipelines(ShapePlumber& plumber, const render::ShapePipeline::Ba // Dual Quaternion addPipeline( - Key::Builder().withMaterial().withSkinned(), + Key::Builder().withMaterial().withSkinned().withDualQuatSkinned(), skinModelDualQuatVertex, modelPixel, nullptr, nullptr); addPipeline( - Key::Builder().withMaterial().withSkinned().withTangents(), + Key::Builder().withMaterial().withSkinned().withTangents().withDualQuatSkinned(), skinModelNormalMapDualQuatVertex, modelNormalMapPixel, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withSkinned(), skinModelDualQuatVertex, modelSpecularMapPixel, nullptr, nullptr); addPipeline( - Key::Builder().withMaterial().withSkinned().withTangents().withSpecular(), + Key::Builder().withMaterial().withSkinned().withTangents().withSpecular().withDualQuatSkinned(), skinModelNormalMapDualQuatVertex, modelNormalSpecularMapPixel, nullptr, nullptr); addPipeline( - Key::Builder().withMaterial().withSkinned().withTangents().withFade(), + Key::Builder().withMaterial().withSkinned().withTangents().withFade().withDualQuatSkinned(), skinModelNormalMapFadeDualQuatVertex, modelNormalMapFadePixel, batchSetter, itemSetter, nullptr, nullptr); } From 7cae04883e85a747e6472049515a07b0093cc473 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Tue, 27 Feb 2018 17:19:02 -0800 Subject: [PATCH 3/9] WIP. --- libraries/render-utils/src/RenderPipelines.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 6264d82187..6ad86dfd37 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -718,6 +718,17 @@ void initZPassPipelines(ShapePlumber& shapePlumber, gpu::StatePointer state) { shapePlumber.addPipeline( ShapeKey::Filter::Builder().withSkinned().withFade(), skinFadeProgram, state); + + //Added for dual quaternions + auto skinDualQuatVertex = skin_model_shadow_dq_vert::getShader(); + gpu::ShaderPointer skinFadeDualQuatProgram = gpu::Shader::createProgram(skinFadeVertex, skinFadePixel); + shapePlumber.addPipeline( + ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withFade(), + skinDualQuatVertex, state); + + shapePlumber.addPipeline( + ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withoutFade(), + skinDualQuatVertex, state); } #include "RenderPipelines.h" From 5764a21c4a7da429db29e510501cb528deb0ea03 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 28 Feb 2018 08:12:48 -0800 Subject: [PATCH 4/9] WIP. --- libraries/render-utils/src/RenderPipelines.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 6ad86dfd37..14e1993239 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -720,15 +720,11 @@ void initZPassPipelines(ShapePlumber& shapePlumber, gpu::StatePointer state) { skinFadeProgram, state); //Added for dual quaternions - auto skinDualQuatVertex = skin_model_shadow_dq_vert::getShader(); - gpu::ShaderPointer skinFadeDualQuatProgram = gpu::Shader::createProgram(skinFadeVertex, skinFadePixel); + auto skinModelDualQuatVertex = skin_model_shadow_dq_vert::getShader(); + gpu::ShaderPointer skinModelDualQuatProgram = gpu::Shader::createProgram(skinModelDualQuatVertex, skinPixel); shapePlumber.addPipeline( - ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withFade(), - skinDualQuatVertex, state); - - shapePlumber.addPipeline( - ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withoutFade(), - skinDualQuatVertex, state); + ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned(), + skinModelDualQuatProgram, state); } #include "RenderPipelines.h" From faad930e352ecb28b5223457cb421a5487b778b8 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 28 Feb 2018 08:44:01 -0800 Subject: [PATCH 5/9] WIP. --- .../render-utils/src/RenderPipelines.cpp | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 14e1993239..1d3bd00940 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -100,6 +100,7 @@ #include "model_shadow_vert.h" #include "skin_model_shadow_vert.h" #include "skin_model_shadow_dq_vert.h" +#include "skin_model_shadow_fade_dq_vert.h" #include "model_shadow_frag.h" #include "skin_model_shadow_frag.h" @@ -217,6 +218,7 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip auto skinModelDualQuatVertex = skin_model_dq_vert::getShader(); auto skinModelNormalMapDualQuatVertex = skin_model_normal_map_dq_vert::getShader(); auto skinModelShadowDualQuatVertex = skin_model_shadow_dq_vert::getShader(); + auto skinModelShadowFadeDualQuatVertex = skin_model_shadow_fade_dq_vert::getShader(); auto skinModelFadeDualQuatVertex = skin_model_fade_dq_vert::getShader(); auto skinModelNormalMapFadeDualQuatVertex = skin_model_normal_map_fade_dq_vert::getShader(); auto skinModelTranslucentDualQuatVertex = skinModelFadeDualQuatVertex; // We use the same because it ouputs world position per vertex @@ -519,12 +521,12 @@ void initDeferredPipelines(render::ShapePlumber& plumber, const render::ShapePip // Now repeat for dual quaternion // Depth-only addPipeline( - Key::Builder().withSkinned().withDepthOnly().withDualQuatSkinned(), + Key::Builder().withSkinned().withDualQuatSkinned().withDepthOnly(), skinModelShadowDualQuatVertex, modelShadowPixel, nullptr, nullptr); // Same thing but with Fade on addPipeline( - Key::Builder().withSkinned().withDepthOnly().withFade().withDualQuatSkinned(), - skinModelShadowDualQuatVertex, modelShadowFadePixel, batchSetter, itemSetter); + Key::Builder().withSkinned().withDualQuatSkinned().withDepthOnly().withFade(), + skinModelShadowFadeDualQuatVertex, modelShadowFadePixel, batchSetter, itemSetter); } void initForwardPipelines(ShapePlumber& plumber, const render::ShapePipeline::BatchSetter& batchSetter, const render::ShapePipeline::ItemSetter& itemSetter) { @@ -720,11 +722,17 @@ void initZPassPipelines(ShapePlumber& shapePlumber, gpu::StatePointer state) { skinFadeProgram, state); //Added for dual quaternions - auto skinModelDualQuatVertex = skin_model_shadow_dq_vert::getShader(); - gpu::ShaderPointer skinModelDualQuatProgram = gpu::Shader::createProgram(skinModelDualQuatVertex, skinPixel); + auto skinModelShadowDualQuatVertex = skin_model_shadow_dq_vert::getShader(); + gpu::ShaderPointer skinModelDualQuatProgram = gpu::Shader::createProgram(skinModelShadowDualQuatVertex, skinPixel); shapePlumber.addPipeline( - ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned(), + ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withoutFade(), skinModelDualQuatProgram, state); + + auto skinModelShadowFadeDualQuatVertex = skin_model_shadow_fade_dq_vert::getShader(); + gpu::ShaderPointer skinModelShadowDualQuatProgram = gpu::Shader::createProgram(skinModelShadowFadeDualQuatVertex, skinPixel); + shapePlumber.addPipeline( + ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withFade(), + skinModelShadowDualQuatProgram, state); } #include "RenderPipelines.h" From 5d7e6651a761b0f96db5b9f81cb8f9cc437a3596 Mon Sep 17 00:00:00 2001 From: NissimHadar Date: Wed, 28 Feb 2018 11:05:02 -0800 Subject: [PATCH 6/9] Use correct pixel shader. --- libraries/render-utils/src/RenderPipelines.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 1d3bd00940..2ae59ec59e 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -723,16 +723,16 @@ void initZPassPipelines(ShapePlumber& shapePlumber, gpu::StatePointer state) { //Added for dual quaternions auto skinModelShadowDualQuatVertex = skin_model_shadow_dq_vert::getShader(); - gpu::ShaderPointer skinModelDualQuatProgram = gpu::Shader::createProgram(skinModelShadowDualQuatVertex, skinPixel); + gpu::ShaderPointer skinModelShadowDualQuatProgram = gpu::Shader::createProgram(skinModelShadowDualQuatVertex, skinPixel); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withoutFade(), - skinModelDualQuatProgram, state); + skinModelShadowDualQuatProgram, state); auto skinModelShadowFadeDualQuatVertex = skin_model_shadow_fade_dq_vert::getShader(); - gpu::ShaderPointer skinModelShadowDualQuatProgram = gpu::Shader::createProgram(skinModelShadowFadeDualQuatVertex, skinPixel); + gpu::ShaderPointer skinModelShadowFadeDualQuatProgram = gpu::Shader::createProgram(skinModelShadowFadeDualQuatVertex, skinFadePixel); shapePlumber.addPipeline( ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withFade(), - skinModelShadowDualQuatProgram, state); + skinModelShadowFadeDualQuatProgram, state); } #include "RenderPipelines.h" From a7542d5b9084954d8ee5556e68962ce74fb0173e Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 28 Feb 2018 17:46:22 -0800 Subject: [PATCH 7/9] fixing the shadow --- libraries/render-utils/src/RenderPipelines.cpp | 17 +++++++++++++++-- libraries/render-utils/src/RenderShadowTask.cpp | 15 ++++++++++++++- .../src/skin_model_normal_map_fade_dq.slv | 2 ++ libraries/render/src/render/ShapePipeline.h | 6 ++++-- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 3fedae1778..1c2535e0aa 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -672,7 +672,7 @@ void initZPassPipelines(ShapePlumber& shapePlumber, gpu::StatePointer state) { auto skinPixel = skin_model_shadow_frag::getShader(); gpu::ShaderPointer skinProgram = gpu::Shader::createProgram(skinVertex, skinPixel); shapePlumber.addPipeline( - ShapeKey::Filter::Builder().withSkinned().withoutFade(), + ShapeKey::Filter::Builder().withSkinned().withoutDualQuatSkinned().withoutFade(), skinProgram, state); auto modelFadeVertex = model_shadow_fade_vert::getShader(); @@ -686,8 +686,21 @@ void initZPassPipelines(ShapePlumber& shapePlumber, gpu::StatePointer state) { auto skinFadePixel = skin_model_shadow_fade_frag::getShader(); gpu::ShaderPointer skinFadeProgram = gpu::Shader::createProgram(skinFadeVertex, skinFadePixel); shapePlumber.addPipeline( - ShapeKey::Filter::Builder().withSkinned().withFade(), + ShapeKey::Filter::Builder().withSkinned().withoutDualQuatSkinned().withFade(), skinFadeProgram, state); + + //Added for dual quaternions + auto skinModelShadowDualQuatVertex = skin_model_shadow_dq_vert::getShader(); + gpu::ShaderPointer skinModelShadowDualQuatProgram = gpu::Shader::createProgram(skinModelShadowDualQuatVertex, skinPixel); + shapePlumber.addPipeline( + ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withoutFade(), + skinModelShadowDualQuatProgram, state); +/* + auto skinModelShadowFadeDualQuatVertex = skin_model_shadow_fade_dq_vert::getShader(); + gpu::ShaderPointer skinModelShadowFadeDualQuatProgram = gpu::Shader::createProgram(skinModelShadowFadeDualQuatVertex, skinFadePixel); + shapePlumber.addPipeline( + ShapeKey::Filter::Builder().withSkinned().withDualQuatSkinned().withFade(), + skinModelShadowFadeDualQuatProgram, state);*/ } #include "RenderPipelines.h" diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index e8963c2e4e..b5a329cc91 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -163,8 +163,10 @@ void RenderShadowMap::run(const render::RenderContextPointer& renderContext, con auto shadowPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder); auto shadowSkinnedPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned()); + auto shadowSkinnedDQPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned().withDualQuatSkinned()); std::vector skinnedShapeKeys{}; + std::vector skinnedDQShapeKeys{}; std::vector ownPipelineShapeKeys{}; // Iterate through all inShapes and render the unskinned @@ -172,7 +174,11 @@ void RenderShadowMap::run(const render::RenderContextPointer& renderContext, con batch.setPipeline(shadowPipeline->pipeline); for (auto items : inShapes) { if (items.first.isSkinned()) { - skinnedShapeKeys.push_back(items.first); + if (items.first.isDualQuatSkinned()) { + skinnedDQShapeKeys.push_back(items.first); + } else { + skinnedShapeKeys.push_back(items.first); + } } else if (!items.first.hasOwnPipeline()) { renderItems(renderContext, items.second); } else { @@ -187,6 +193,13 @@ void RenderShadowMap::run(const render::RenderContextPointer& renderContext, con renderItems(renderContext, inShapes.at(key)); } + // Reiterate to render the DQ skinned + args->_shapePipeline = shadowSkinnedDQPipeline; + batch.setPipeline(shadowSkinnedDQPipeline->pipeline); + for (const auto& key : skinnedDQShapeKeys) { + renderItems(renderContext, inShapes.at(key)); + } + // Finally render the items with their own pipeline last to prevent them from breaking the // render state. This is probably a temporary code as there is probably something better // to do in the render call of objects that have their own pipeline. diff --git a/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv b/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv index 02b3742f6f..d6e07575b1 100644 --- a/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv +++ b/libraries/render-utils/src/skin_model_normal_map_fade_dq.slv @@ -30,6 +30,7 @@ out vec3 _normal; out vec3 _tangent; out vec3 _color; out float _alpha; +out vec4 _worldPosition; void main(void) { vec4 position = vec4(0.0, 0.0, 0.0, 0.0); @@ -53,6 +54,7 @@ void main(void) { TransformCamera cam = getTransformCamera(); TransformObject obj = getTransformObject(); <$transformModelToEyeAndClipPos(cam, obj, position, _position, gl_Position)$> + <$transformModelToWorldPos(obj, position, _worldPosition)$> <$transformModelToWorldDir(cam, obj, interpolatedNormal.xyz, interpolatedNormal.xyz)$> <$transformModelToWorldDir(cam, obj, interpolatedTangent.xyz, interpolatedTangent.xyz)$> diff --git a/libraries/render/src/render/ShapePipeline.h b/libraries/render/src/render/ShapePipeline.h index f175bab99a..e0e675ce83 100644 --- a/libraries/render/src/render/ShapePipeline.h +++ b/libraries/render/src/render/ShapePipeline.h @@ -135,8 +135,8 @@ public: Builder& withSkinned() { _flags.set(SKINNED); _mask.set(SKINNED); return (*this); } Builder& withoutSkinned() { _flags.reset(SKINNED); _mask.set(SKINNED); return (*this); } - Builder& withDualQuatSkinned() { _flags.set(DUAL_QUAT_SKINNED); _mask.set(SKINNED); return (*this); } - Builder& withoutDualQuatSkinned() { _flags.reset(DUAL_QUAT_SKINNED); _mask.set(SKINNED); return (*this); } + Builder& withDualQuatSkinned() { _flags.set(DUAL_QUAT_SKINNED); _mask.set(DUAL_QUAT_SKINNED); return (*this); } + Builder& withoutDualQuatSkinned() { _flags.reset(DUAL_QUAT_SKINNED); _mask.set(DUAL_QUAT_SKINNED); return (*this); } Builder& withDepthOnly() { _flags.set(DEPTH_ONLY); _mask.set(DEPTH_ONLY); return (*this); } Builder& withoutDepthOnly() { _flags.reset(DEPTH_ONLY); _mask.set(DEPTH_ONLY); return (*this); } @@ -176,6 +176,7 @@ public: bool isUnlit() const { return _flags[UNLIT]; } bool isTranslucent() const { return _flags[TRANSLUCENT]; } bool isSkinned() const { return _flags[SKINNED]; } + bool isDualQuatSkinned() const { return _flags[DUAL_QUAT_SKINNED]; } bool isDepthOnly() const { return _flags[DEPTH_ONLY]; } bool isDepthBiased() const { return _flags[DEPTH_BIAS]; } bool isWireframe() const { return _flags[WIREFRAME]; } @@ -216,6 +217,7 @@ inline QDebug operator<<(QDebug debug, const ShapeKey& key) { << "isUnlit:" << key.isUnlit() << "isTranslucent:" << key.isTranslucent() << "isSkinned:" << key.isSkinned() + << "isDualQuatSkinned:" << key.isDualQuatSkinned() << "isDepthOnly:" << key.isDepthOnly() << "isDepthBiased:" << key.isDepthBiased() << "isWireframe:" << key.isWireframe() From a227cf1edb0051a6a450156a0be229b393d1233f Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 1 Mar 2018 10:49:58 -0800 Subject: [PATCH 8/9] Fixing bad key/pipeline pair --- libraries/render-utils/src/RenderPipelines.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index b3a1d40257..84a144e6db 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -592,8 +592,8 @@ void initForwardPipelines(ShapePlumber& plumber, const render::ShapePipeline::Ba Key::Builder().withMaterial().withSkinned().withTangents().withDualQuatSkinned(), skinModelNormalMapDualQuatVertex, modelNormalMapPixel, nullptr, nullptr); addPipeline( - Key::Builder().withMaterial().withSkinned(), - skinModelDualQuatVertex, modelSpecularMapPixel, nullptr, nullptr); + Key::Builder().withMaterial().withSkinned().withSpecular().withDualQuatSkinned(), + skinModelDualQuatVertex, modelSpecularMapPixel, nullptr, nullptr); addPipeline( Key::Builder().withMaterial().withSkinned().withTangents().withSpecular().withDualQuatSkinned(), skinModelNormalMapDualQuatVertex, modelNormalSpecularMapPixel, nullptr, nullptr); From fc8f1c1e65825f1d15047a4c6afe1f0e12635d43 Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 2 Mar 2018 14:20:33 -0800 Subject: [PATCH 9/9] Resolving conflicts --- libraries/render-utils/src/RenderPipelines.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 2522f49920..aca8439547 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -432,7 +432,6 @@ void initForwardPipelines(ShapePlumber& plumber, const render::ShapePipeline::Ba auto skinModelDualQuatVertex = skin_model_dq_vert::getShader(); auto skinModelNormalMapDualQuatVertex = skin_model_normal_map_dq_vert::getShader(); - auto skinModelNormalMapFadeDualQuatVertex = skin_model_normal_map_fade_dq_vert::getShader(); // Pixel shaders auto modelPixel = forward_model_frag::getShader(); @@ -472,7 +471,7 @@ void initForwardPipelines(ShapePlumber& plumber, const render::ShapePipeline::Ba addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent(), skinModelVertex, modelTranslucentPixel); addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents(), skinModelNormalMapVertex, modelTranslucentPixel); addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withDualQuatSkinned(), skinModelDualQuatVertex, modelTranslucentPixel); - addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents().withDualQuatSkinned(), skinModelNormalMapFadeDualQuatVertex, modelTranslucentPixel); + addPipeline(Key::Builder().withMaterial().withSkinned().withTranslucent().withTangents().withDualQuatSkinned(), skinModelNormalMapDualQuatVertex, modelTranslucentPixel); forceLightBatchSetter = false; }