Slightly improved coloring.

This commit is contained in:
2017-11-17 11:14:22 +01:00
parent 914fcfe051
commit fbc2a5ca4a
2 changed files with 5 additions and 3 deletions

View File

@@ -19,7 +19,7 @@ static void handleMouseMove(int x, int y)
static void move(unsigned char key) static void move(unsigned char key)
{ {
float speed = 0.2; float speed = 0.5;
float dir[3]; float dir[3];
// Currently very buggy // Currently very buggy
if (key == 'w' || key == 's') { if (key == 'w' || key == 's') {

View File

@@ -86,16 +86,18 @@ static void drawOneParticle()
static void renderFlatLayer(const LayerData& data) static void renderFlatLayer(const LayerData& data)
{ {
const auto [minElem,maxElem] = minmax_element(data.data(), data.data() + data.numEntries());
const float intensityLimit = max(abs(*minElem), abs(*maxElem));
auto& shape = data.shape(); auto& shape = data.shape();
CHECK_EQ(shape[0], 1) << "Should have only one instance per layer." << endl; CHECK_EQ(shape[0], 1) << "Should have only one instance per layer." << endl;
// Draw one triangle for every point in the layer // Draw one triangle for every point in the layer
// Color depends on current value. // Color depends on current value.
vector<float> intensities(data.data(), data.data() + data.numEntries()); vector<float> intensities(data.data(), data.data() + data.numEntries());
transform(intensities.begin(), intensities.end(), intensities.begin(), [](auto x) { return clamp(x, -1.0f, 1.0f);}); transform(intensities.begin(), intensities.end(), intensities.begin(), [=](auto x) { return clamp(x, -intensityLimit, intensityLimit);});
glPushMatrix(); glPushMatrix();
for (auto i : intensities) { for (auto i : intensities) {
auto intensity = min(-log(abs(i)) / 20.0f, 1.0f); auto intensity = min(-log(abs(i) / intensityLimit) / 10.0f, 1.0f);
if (i > 0) { if (i > 0) {
glColor3f(intensity, intensity, 1); glColor3f(intensity, intensity, 1);
} else { } else {