From edcde639da322b1b64fc96f7a35bbefef036d2da Mon Sep 17 00:00:00 2001 From: Martin Opat Date: Wed, 15 Jan 2025 18:33:47 +0100 Subject: [PATCH] Renamed GUI elements --- src/gui/input/Widget.cpp | 4 ++-- src/illumination/transferFunction.cu | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/gui/input/Widget.cpp b/src/gui/input/Widget.cpp index b6ba24c..8b9b2de 100644 --- a/src/gui/input/Widget.cpp +++ b/src/gui/input/Widget.cpp @@ -49,14 +49,14 @@ void Widget::tick(double fps) { float min = -1, max = 1; ImGui::Begin("Transfer Function Controls"); - ImGui::DragInt("k (log [1e-10, 1])", &this->opacityK, 1, 0, 100, "%d%%", ImGuiSliderFlags_AlwaysClamp); + ImGui::DragInt("Gradient exp. (log [1e-10, 1])", &this->opacityK, 1, 0, 100, "%d%%", ImGuiSliderFlags_AlwaysClamp); ImGui::DragFloat("sigmoidShift", &this->sigmoidShift, 0.01f, 0.0f, 1.0f, "%.2f"); ImGui::InputFloat("sigmoidExp", &this->sigmoidExp, 10.0f, 100.0f, "%.0f"); // the items[] contains the entries for the combobox. The selected index is stored as an int on this->tfComboSelected // the default entry is set in the constructor, so if you want that to be a specific entry just change it // whatever value is selected here is available on the gpu as d_tfComboSelected. - const char* items[] = {"First option", "Another option", "this is the third option", "..."}; + const char* items[] = {"Opacity - gradient", "Opacity - sigmoid", "Opacity - constant", "..."}; if (ImGui::BeginCombo("ComboBox for transferFunction", items[this->tfComboSelected])) { for (int n = 0; n < IM_ARRAYSIZE(items); n++) diff --git a/src/illumination/transferFunction.cu b/src/illumination/transferFunction.cu index 6930284..a360602 100644 --- a/src/illumination/transferFunction.cu +++ b/src/illumination/transferFunction.cu @@ -7,7 +7,7 @@ __device__ float opacityFromGradient(const Vec3 &grad) { float gradMag = grad.length(); - float alpha = 1.0f - expf(-1 * gradMag); // TODO: This parameter probably has the wrong scale + float alpha = 1.0f - expf(-d_opacityK * gradMag); // TODO: This parameter probably has the wrong scale return alpha; } @@ -51,12 +51,26 @@ __device__ float4 transferFunction(float density, const Vec3& grad, const Point3 // TODO: This is a Gui select element // TODO: Add a way to pick different function for alpha - float alpha = opacityFromGradient(grad); - // alpha = 0.1f; -// alpha = opacitySigmoid(normDensity); - // alpha = (1.0f - fabs(grad.normalize().dot(rayDir.normalize()))) * 0.8f + 0.2f; + float alpha; + switch (d_tfComboSelected) { + case 0: + alpha = opacityFromGradient(grad); + break; + + case 1: + alpha = opacitySigmoid(normDensity); + break; - float alphaSample = density * alpha * 0.1; + case 2: + alpha = 0.1f; + break; + + default: + alpha = 1.0f; // This should not be reached anyway + break; + } + + float alphaSample = density * alpha * 0.1; // TODO: Why is this still 0.1? // --------------------------- Shading --------------------------- // Apply Phong