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
37 37
38#define OUTLINE_STENCIL_MASK 138#define OUTLINE_STENCIL_MASK 1
39 39
40extern void initZPassPipelines(ShapePlumber& plumber, gpu::StatePointer state);
41
40HighlightRessources::HighlightRessources() {42HighlightRessources::HighlightRessources() {
41}43}
42 44
@@ -180,6 +182,7 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c · 137 unmodified lines
180 182
181 auto maskPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder);183 auto maskPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder);
182 auto maskSkinnedPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned());184 auto maskSkinnedPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned());
185 auto maskSkinnedDQPipeline = _shapePlumber->pickPipeline(args, defaultKeyBuilder.withSkinned().withDualQuatSkinned());
183 186
184 // Setup camera, projection and viewport for all items187 // Setup camera, projection and viewport for all items
185 batch.setViewportTransform(args->_viewport);188 batch.setViewportTransform(args->_viewport);
@@ -187,14 +190,17 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c · 1 unmodified line
187 batch.setProjectionJitter(jitter.x, jitter.y);190 batch.setProjectionJitter(jitter.x, jitter.y);
188 batch.setViewTransform(viewMat);191 batch.setViewTransform(viewMat);
189 192
190 std::vector<ShapeKey> skinnedShapeKeys{};193 std::vector<ShapeKey> skinnedShapeKeys;
194 std::vector<ShapeKey> skinnedDQShapeKeys;
191 195
192 // Iterate through all inShapes and render the unskinned196 // Iterate through all inShapes and render the unskinned
193 args->_shapePipeline = maskPipeline;197 args->_shapePipeline = maskPipeline;
194 batch.setPipeline(maskPipeline->pipeline);198 batch.setPipeline(maskPipeline->pipeline);
195 for (const auto& items : inShapes) {199 for (const auto& items : inShapes) {
196 itemBounds.insert(itemBounds.end(), items.second.begin(), items.second.end());200 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()) {
198 skinnedShapeKeys.push_back(items.first);204 skinnedShapeKeys.push_back(items.first);
199 } else {205 } else {
200 renderItems(renderContext, items.second);206 renderItems(renderContext, items.second);
@@ -202,10 +208,21 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c · 1 unmodified line
202 }208 }
203 209
204 // Reiterate to render the skinned210 // Reiterate to render the skinned
205 args->_shapePipeline = maskSkinnedPipeline;211 if (skinnedShapeKeys.size() > 0) {
206 batch.setPipeline(maskSkinnedPipeline->pipeline);212 args->_shapePipeline = maskSkinnedPipeline;
207 for (const auto& key : skinnedShapeKeys) {213 batch.setPipeline(maskSkinnedPipeline->pipeline);
208 renderItems(renderContext, inShapes.at(key));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 }
209 }226 }
210 227
211 args->_shapePipeline = nullptr;228 args->_shapePipeline = nullptr;
@@ -488,7 +505,7 @@ void DrawHighlightTask::build(JobModel& task, const render::Varying& inputs, ren · 276 unmodified lines
488 state->setDepthTest(true, true, gpu::LESS_EQUAL);505 state->setDepthTest(true, true, gpu::LESS_EQUAL);
489 state->setColorWriteMask(false, false, false, false);506 state->setColorWriteMask(false, false, false, false);
490 507
491 initMaskPipelines(*shapePlumber, state);508 initZPassPipelines(*shapePlumber, state);
492 }509 }
493 auto sharedParameters = std::make_shared<HighlightSharedParameters>();510 auto sharedParameters = std::make_shared<HighlightSharedParameters>();
494 511
@@ -550,14 +567,3 @@ const render::Varying DrawHighlightTask::addSelectItemJobs(JobModel& task, const · 55 unmodified lines
550 return task.addJob<SelectItems>("TransparentSelection", selectItemInput);567 return task.addJob<SelectItems>("TransparentSelection", selectItemInput);
551}568}
552 569
553void 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}