[HLSL] Smoothstep verhält sich unerwartet
Verfasst: 07.08.2014, 19:11
Vielleicht stehe ich gerade auf dem Schlauch... aber scheinbar tut Smoothstep nicht das was es soll.
Prinzipiell wollte ich einen Höhenwert in eine Textur speichern und wieder heraus lesen. Dabei liegen diese zwischen -10 und 2200.
Dachte mir, man könnte nun einfach folgendes machen:
h = smoothstep(-10, 2200, h); // codieren
h = lerp(-10, 2200, h); // decodieren
Es kommt aber dann ein anderes Ergebnis heraus. Wenn man die Funktionen ausformuliert und wegkürzt kommt man zu folgendem:
h = (h+10)/2210; // codieren (ein saturate ist hier für mich erstmal unrelevant)
h = h*2210-10; // decodieren
Bei der Variante bleiben die Werte letztendlich gleich, also wie erwartet. Wenn ich nun die untere Zeile mit dem Lerp austausche, klappt alles wunderbar. Das Smoothstep allerdings nicht. Habe ich da einen Denkfehler? :shock:
Prinzipiell wollte ich einen Höhenwert in eine Textur speichern und wieder heraus lesen. Dabei liegen diese zwischen -10 und 2200.
Dachte mir, man könnte nun einfach folgendes machen:
h = smoothstep(-10, 2200, h); // codieren
h = lerp(-10, 2200, h); // decodieren
Es kommt aber dann ein anderes Ergebnis heraus. Wenn man die Funktionen ausformuliert und wegkürzt kommt man zu folgendem:
h = (h+10)/2210; // codieren (ein saturate ist hier für mich erstmal unrelevant)
h = h*2210-10; // decodieren
Bei der Variante bleiben die Werte letztendlich gleich, also wie erwartet. Wenn ich nun die untere Zeile mit dem Lerp austausche, klappt alles wunderbar. Das Smoothstep allerdings nicht. Habe ich da einen Denkfehler? :shock: