mały| Wykres funkcji smoothstep i smootherstep z zerem jako wartością minimalną i jedynką jako maksymalną. Smoothstep – rodzina sigmoidalnych funkcji powszechnie stosowanych w grafice komputerowejSmoothstep at Microsoft Developer Network.GLSL Language Specification, Version 1.40., silnikach gier wideoUnity game engine SmoothStep documentation. i uczeniu maszynowym.
Wartość funkcja zależy od argumentu x oraz dwóch parametrów: „lewej krawędzi” i „prawej krawędzi” (przy czym przyjmuje się, że lewa krawędź jest mniejsza od prawej). Argumentem x jest liczba rzeczywista. Funkcja zwraca 0, jeśli x jest mniejsze lub równe lewej krawędzi, oraz 1, jeśli x jest większe od lub równe prawej krawędzi. W przeciwnym razie funkcja dokonuje płynnej (ang. smooth) interpolacji, wykorzystując interpolację Hermite'a, i zwraca wartość z zakresu od 0 do 1. Nachylenie funkcji wynosi zero na obu krawędziach. Dzięki temu idealnie nadaje się ona do tworzenia gładkich przejść między wartościami – można stosować ją do interpolacji kolejnych segmentów zamiast korzystać z bardziej złożonych lub kosztownych technik interpolacyjnych.
W GLSL implementuje interpolację Hermite’a stopnia trzeciego , po uprzednim ograniczeniu () argumentu. Przy założeniu, że lewa krawędź to 0, a prawa krawędź to 1, wzór ma postać:
Poniżej przedstawiono zmodyfikowany przykład implementacji w języku C/C++ udostępniony przez firmę AMD .float smoothstep (float edge0, float edge1, float x) { // Scale, and clamp x to 0..1 range x = clamp((x - edge0) / (edge1 - edge0));
return x * x * (3.0f - 2.0f * x); }
float clamp(float x, float lowerlimit = 0.0f, float upperlimit = 1.0f) { if (x < lowerlimit) return lowerlimit; if (x > upperlimit) return upperlimit; return x; }Ogólna postać funkcji smoothstep (przy założeniu, że lewa krawędź to 0, a prawa krawędź ma wartość 1) to:
to funkcja zaciskająca (ang. )
Charakterystyczną krzywą sigmoidalną w kształcie litery S uzyskuje się za pomocą tylko dla dodatnich liczb całkowitych n. Stopień wielomianu wykorzystanego w funkcji wynosi 2n + 1. Dla n = 1 nachylenie (czyli pierwsza pochodna funkcji) jest równe zeru na lewej i prawej krawędzi (dla x = 0 i x = 1). Dla wyższych n, drugie i kolejne pochodne są równe zeru na krawędziach.
Przypisy
Kategoria:Algorytmy graficzne