GLSL 셰이더 _ smoothstep / pow / exp / log

코드멍멍이(Joonieboy)·2022년 9월 4일
1

GLSL SHADER

목록 보기
1/1
post-thumbnail

smoothstep


색을 부드럽게 그라데이션을 만들어주는 함수예요!!
smoothstep(min, max, x);

if( x < min )
{ x = 0 }
else if( x > max)
{ x = 1 }

if ( min < x < max )
{ "알아서 계산하고, 값을 준다" }

24번째 줄에서 (1.0 - pct)를 해주는 이유는 색을 보간하기 위해서 있는 것 같더라구요.


보간하지 않았을 때, 기준이예요!!

 color = color+pct*vec3(1.0,1.0,0.0);


보간했을 때, 기준이예요!!

color = (1.0-pct)*color+pct*vec3(1.0,1.0,0.0);

19번째 줄에서

vec3 color = vec3(st.x);
//를 변형해서

float y = vec3(st.x);
vec3 color = vec3(y);
//로 변경이 가능하고, 여기서 변형을 줄 수 있어요

float y = vec3(st.x);
vec3 color = pow(st.x, 5.0);

pow 외에도 exp(), log(), sqrt(), step(), smoothstep() 등 다양하게 변형이 가능하며, 이에 따라서 결과 값이 달라지기 때문에 상황에 맞추어 선택하면 돼요! 이러한 GLSL 내장형 함수들은 가속화 돼 있기 때문에 굳이 커스텀 함수를 만들지 않고 사용하는 것이 훨씬 유리할 수 있어요~

Pow()


Pow()의 사용법

float pow(float x, float y)  
vec2 pow(vec2 x, vec2 y)  
vec3 pow(vec3 x, vec3 y)  
vec4 pow(vec4 x, vec4 y)

Pow()는 첫 번째 인자 x를 두 번째 인자 y만큼 거듭제곱한 값을 리턴해요. 즉 x가 3이고, y가 5라면, 3 x 3 x 3 x 3 x 3 인거죠!! 3의 5승.

pow() 그래프

Exp()


exp()의 사용법

float exp(float x)  
vec2 exp(vec2 x)  
vec3 exp(vec3 x)  
vec4 exp(vec4 x)

exp()는 안에 있는 매개변수로 e를 거듭제곱한 것이예요. 즉, e의 x승이죠. exp(5) 라면, e x e x e x e x e 인거죠! e의 5승! 참고로 e는 자연상수로 2.718281828459045…인 무리수예요.

exp() 그래프

Log()


log()의 사용법

float log(float x)  
vec2 log(vec2 x)  
vec3 log(vec3 x)  
vec4 log(vec4 x)

log는 지수 함수의 역함수예요. 그래서 그런지 exp() 그래프와 유사하네요? log()의 return 값은 자연로그의 x 값을 반환하게 되는데, 참고로 이 x 값은 0보다 커야 해요!!

log() 그래프

profile
#유니티개발자 #게임 #인플루언서 #ENFJ

0개의 댓글