History

Addressing merge conflict in HighlightEffect.cpp

sam gateau committed 8 years ago

Commit 09dae5a2 parents efa1dd0 c1dc0ff43 files · +684 −223Browse files

Showing the changes to libraries/render-utils/src/HighlightEffect.cpp (1 of 43 files). Show all

Unified · Split

libraries/render-utils/src/HighlightEffect.cpp+24−18
@@ -37,6 +37,8 @@ namespace gr { · 36 unmodified lines
3737
3838 #define OUTLINE_STENCIL_MASK 1
3939
40+extern void initZPassPipelines(ShapePlumber& plumber, gpu::StatePointer state);
41+
4042 HighlightRessources::HighlightRessources() {
4143 }
4244
@@ -180,6 +182,7 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c · 137 unmodified lines
180182
181183 auto maskPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder);
182184 auto maskSkinnedPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned());
185+ auto maskSkinnedDQPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned().withDualQuatSkinned());
183186
184187 // Setup camera, projection and viewport for all items
185188 batch.setViewportTransform(args->_viewport);
@@ -187,14 +190,17 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c · 1 unmodified line
187190 batch.setProjectionJitter(jitter.x, jitter.y);
188191 batch.setViewTransform(viewMat);
189192
190− std::vector<ShapeKey> skinnedShapeKeys{};
193+ std::vector<ShapeKey> skinnedShapeKeys;
194+ std::vector<ShapeKey> skinnedDQShapeKeys;
191195
192196 // Iterate through all inShapes and render the unskinned
193197 args->_shapePipeline = maskPipeline;
194198 batch.setPipeline(maskPipeline->pipeline);
195199 for (const auto& items : inShapes) {
196200 itemBounds.insert(itemBounds.end(), items.second.begin(), items.second.end());
197− if (items.first.isSkinned()) {
201+ if (items.first.isSkinned() && items.first.isDualQuatSkinned()) {
202+ skinnedDQShapeKeys.push_back(items.first);
203+ } else if (items.first.isSkinned()) {
198204 skinnedShapeKeys.push_back(items.first);
199205 } else {
200206 renderItems(renderContext, items.second);
@@ -202,10 +208,21 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c · 1 unmodified line
202208 }
203209
204210 // Reiterate to render the skinned
205− args->_shapePipeline = maskSkinnedPipeline;
206− batch.setPipeline(maskSkinnedPipeline->pipeline);
207− for (const auto& key : skinnedShapeKeys) {
208− renderItems(renderContext, inShapes.at(key));
211+ if (skinnedShapeKeys.size() > 0) {
212+ args->_shapePipeline = maskSkinnedPipeline;
213+ batch.setPipeline(maskSkinnedPipeline->pipeline);
214+ for (const auto& key : skinnedShapeKeys) {
215+ renderItems(renderContext, inShapes.at(key));
216+ }
217+ }
218+
219+ // Reiterate to render the DQ skinned
220+ if (skinnedDQShapeKeys.size() > 0) {
221+ args->_shapePipeline = maskSkinnedDQPipeline;
222+ batch.setPipeline(maskSkinnedDQPipeline->pipeline);
223+ for (const auto& key : skinnedDQShapeKeys) {
224+ renderItems(renderContext, inShapes.at(key));
225+ }
209226 }
210227
211228 args->_shapePipeline = nullptr;
@@ -488,7 +505,7 @@ void DrawHighlightTask::build(JobModel& task, const render::Varying& inputs, ren · 276 unmodified lines
488505 state->setDepthTest(true, true, gpu::LESS_EQUAL);
489506 state->setColorWriteMask(false, false, false, false);
490507
491− initMaskPipelines(*shapePlumber, state);
508+ initZPassPipelines(*shapePlumber, state);
492509 }
493510 auto sharedParameters = std::make_shared<HighlightSharedParameters>();
494511
@@ -550,14 +567,3 @@ const render::Varying DrawHighlightTask::addSelectItemJobs(JobModel& task, const · 55 unmodified lines
550567 return task.addJob<SelectItems>("TransparentSelection", selectItemInput);
551568 }
552569
553−void DrawHighlightTask::initMaskPipelines(render::ShapePlumber& shapePlumber, gpu::StatePointer state) {
554− gpu::ShaderPointer modelProgram = gpu::Shader::createProgram(shader::render_utils::program::model_shadow);
555− shapePlumber.addPipeline(
556− ShapeKey::Filter::Builder().withoutSkinned(),
557− modelProgram, state);
558−
559− gpu::ShaderPointer deformedProgram = gpu::Shader::createProgram(shader::render_utils::program::deformed_model_shadow);
560− shapePlumber.addPipeline(
561− ShapeKey::Filter::Builder().withSkinned(),
562− deformedProgram, state);
563−}