Skip to content

Commit

Permalink
NF: add config option for uniform lighting (#561)
Browse files Browse the repository at this point in the history
* feat: add single config option for uniform lighting

* fix: move comment to new line

* feat: add ui toggle for uniform illumination
  • Loading branch information
MShinkle authored Dec 5, 2024
1 parent 9343bdd commit ff58a7e
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cortex/defaults.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ filter = url(#dropshadow)
voxlines = false
voxline_color = #FFFFFF
voxline_width = 0.01
# Overwrites emissive, specular, and diffuse to have uniform lighting
uniform_illumination = false
specularity = 1.0
overlayscale = 1
anim_speed = 2
Expand Down
23 changes: 23 additions & 0 deletions cortex/webgl/resources/js/mriview_surface.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,13 @@ var mriview = (function(module) {
}
]);

// Update uniform values based on the uniform illumination option
if (viewopts.uniform_illumination == 'true') {
this.uniforms.diffuse.value.set(0, 0, 0); // Set diffuse to 0
this.uniforms.specular.value.set(0, 0, 0); // Set specular to 0
this.uniforms.emissive.value.set(1, 1, 1); // Set emissive to 1
}

this.ui = (new jsplot.Menu()).add({
unfold: {action:[this, "setMix", 0., 1.]},
pivot: {action:[this, "setPivot", -180, 180]},
Expand All @@ -101,6 +108,7 @@ var mriview = (function(module) {
toggleMultipleLayers: {action: this.toggleMultipleLayers.bind(this), key: 'm', hidden: true, help: "Toggle multiple layers"},
dither: {action:[this, "setDither"]},
sampler: {action:[this, "setSampler", ["nearest", "trilinear"]]},
uniform_illumination: {action:[this, "setUniformIllumination"]},
});


Expand Down Expand Up @@ -846,5 +854,20 @@ var mriview = (function(module) {
this.object.add(this.mesh);
}

module.Surface.prototype.setUniformIllumination = function(val) {
if (val === undefined)
return this.uniforms.emissive.value.x == 1; // Check current state

if (val) {
this.uniforms.diffuse.value.set(0, 0, 0);
this.uniforms.specular.value.set(0, 0, 0);
this.uniforms.emissive.value.set(1, 1, 1);
} else {
this.uniforms.diffuse.value.set(.8, .8, .8);
this.uniforms.specular.value.set(.005, .005, .005);
this.uniforms.emissive.value.set(.2, .2, .2);
}
};

return module;
}(mriview || {}));

0 comments on commit ff58a7e

Please sign in to comment.