History

Switched to uniforms for sending fade shader data. Moved more fade functions to FadeEffect class

Olivier Prat committed 9 years ago

Commit de143d01 parent a9ab9d26 files · +60 −84Browse files

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

Unified · Split

libraries/render-utils/src/MeshPartPayload.cpp+5−56
@@ -321,19 +321,10 @@ template <> void payloadRender(const ModelMeshPartPayload::Pointer& payload, Ren · 320 unmodified lines
321321 }
322322 }
323323
324−struct ModelMeshPartPayload::Fade
325−{
326− glm::vec3 _offset; // The noise offset
327− float _percent; // The fade percent
328−};
329−
330324 ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int _meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform) :
331325 _meshIndex(_meshIndex),
332326 _shapeID(shapeIndex) {
333327
334− Fade fade;
335− _fadeBuffer = gpu::BufferView(std::make_shared<gpu::Buffer>(sizeof(Fade), (const gpu::Byte*) &fade));
336−
337328 assert(model && model->isLoaded());
338329 _model = model;
339330 auto& modelMesh = model->getGeometry()->getMeshes().at(_meshIndex);
@@ -493,7 +484,7 @@ ShapeKey ModelMeshPartPayload::getShapeKey() const { · 153 unmodified lines
493484 if (wireframe) {
494485 builder.withWireframe();
495486 }
496− if (_fadeState != FADE_COMPLETE) {
487+ if (_fadeState != FadeEffect::Complete) {
497488 builder.withFade();
498489 }
499490 return builder.build();
@@ -529,48 +520,6 @@ void ModelMeshPartPayload::bindTransform(gpu::Batch& batch, const ShapePipeline: · 29 unmodified lines
529520 batch.setModelTransform(_transform);
530521 }
531522
532−float ModelMeshPartPayload::computeFadePercent() const {
533− if (_fadeState == FADE_WAITING_TO_START) {
534− return 0.0f;
535− }
536− float fadeAlpha = 1.0f;
537− const double INV_FADE_PERIOD = 1.0 / (double)(3 * USECS_PER_SECOND);
538− double fraction = (double)(usecTimestampNow() - _fadeStartTime) * INV_FADE_PERIOD;
539− if (fraction < 1.0) {
540− fadeAlpha = Interpolate::simpleNonLinearBlend(fraction);
541− }
542− if (fadeAlpha >= 1.0f) {
543− _fadeState = FADE_COMPLETE;
544− // when fade-in completes we flag model for one last "render item update"
545− ModelPointer model = _model.lock();
546− if (model) {
547− model->setRenderItemsNeedUpdate();
548− }
549− fadeAlpha = 1.0f;
550− }
551− return fadeAlpha;
552−}
553−
554−void ModelMeshPartPayload::bindFade(gpu::Batch& batch) const {
555− const bool isDebugEnabled = DependencyManager::get<FadeEffect>()->isDebugEnabled();
556−
557− if (_fadeState != FADE_COMPLETE || isDebugEnabled) {
558− auto& fade = _fadeBuffer.edit<Fade>();
559− glm::vec3 offset = _transform.getTranslation();
560−
561− // A bit ugly to have the test at every bind...
562− if (!isDebugEnabled) {
563− fade._percent = computeFadePercent();
564− }
565− else {
566− fade._percent = DependencyManager::get<FadeEffect>()->getDebugFadePercent();
567− }
568−
569− fade._offset = offset;
570− batch.setUniformBuffer(ShapePipeline::Slot::BUFFER::FADE, _fadeBuffer);
571− }
572−}
573−
574523 void ModelMeshPartPayload::render(RenderArgs* args) {
575524 PerformanceTimer perfTimer("ModelMeshPartPayload::render");
576525
@@ -579,13 +528,13 @@ void ModelMeshPartPayload::render(RenderArgs* args) { · 2 unmodified lines
579528 return; // bail asap
580529 }
581530
582− if (_fadeState == FADE_WAITING_TO_START) {
531+ if (_fadeState == FadeEffect::WaitingToStart) {
583532 if (model->isLoaded()) {
584533 if (EntityItem::getEntitiesShouldFadeFunction()()) {
585534 _fadeStartTime = usecTimestampNow();
586− _fadeState = FADE_IN_PROGRESS;
535+ _fadeState = FadeEffect::InProgress;
587536 } else {
588− _fadeState = FADE_COMPLETE;
537+ _fadeState = FadeEffect::Complete;
589538 }
590539 model->setRenderItemsNeedUpdate();
591540 } else {
@@ -618,7 +567,7 @@ void ModelMeshPartPayload::render(RenderArgs* args) { · 26 unmodified lines
618567 bindMaterial(batch, locations, args->_enableTexturing);
619568
620569 // Apply fade effect
621− bindFade(batch);
570+ DependencyManager::get<FadeEffect>()->bindPerItem(batch, args, _transform.getTranslation(), _fadeStartTime, _fadeState);
622571
623572 args->_details._materialSwitches++;
624573

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t