smoothstep(min,max,x) : x가 [min, max] 사이의 값인 경우에 대해서 [0, 1] 사이에서 부드럽게 변하는
Hermite 보간법을 리턴한다. x가 min보다 작다면 0을 리턴하고, max보다 크다면 1을 리턴한다.
..라고 하는데 뭐야 저게…
라고 해서 알아보니.

(그림1)
일단 0에서 1로 가는 Liner 한 그래프가 있다고 치죠. 저걸 거꾸로 하면 단순무식한 렘버트 출력값과 같겠죠 (…)

(그림2)
그리고 min과 max 값을 정합니다. 뭐 이건 0과 1로 정하면 원래 그림인 (그림 1)과 같지만 여기서는 0.2와 0.8로 정했다고 치죠.

(그림3)
X 값이 min 값보다 작으면 최종 결과는 0 값이 나오고, X 값이 max보다 크면 1값이 나오는건 쉽지요.

(그림4)
근데 만약 X 값이 min과 max 사이에 있는 값이면?
비율을 다시 계산해서 값을 내놓는다는 것입니다. 그냥 Liner 하게 계산하면 그림과 같겠지요.
근데 여기서 Hermite Interpolation (보간법)을 사용한다고 합니다. http://en.wikipedia.org/wiki/Hermite_interpolation
… 이거 뭐야 몰라 무서워… 그래픽쟁이한테 이런 수학 공식 들이밀지 마… (이럴때만 그래픽인척 하는 초파리이자 박쥐)
뭐 그래서 더 생각 안하고, 그림으로 만들어 봤습니다. -_-
하프 렘버트 출력물을
밝기에 따라 3단계로 적용. smoothstep 사용. Liner 하지 않다는 것이 보입니다.
Warp 대용으로 사용한 최종 결과물. 텍스쳐 셈플러 하나 줄였습니다. 만세. 근데 이게 더 무거우면 어쩌지 ㄷㄷㄷ
즉 아마도 Smoothstep의 보간법은 이런 결과물을 내놓는 듯 합니다.

(그림5)
에잇 틀렸으면 좀 가르쳐 주세요.