개요
메타볼 기능을 구현하려고 알아보던 참에 재미있는 식을 발견하여 정리한 것입니다.
Smooth Min는 두 함수가 일정 값 범위 내에 들어오면 그때부터 보간을 수행하는 함수입니다. 또한 이름처럼 보간된 부분이 부드럽게 이어지도록 해줍니다.
이 정리는 여기의 공식 해석을 기반이며, 원글을 조금 더 풀어서 설명하는 것을 목표로 합니다.
내용
Smooth Min 함수는 아래와 같습니다. 이제 이 공식에 숨어있는 의미를 알아봅시다.
// https://iquilezles.org/www/articles/smin/smin.htm
// Polynomial smooth minimum by iq
float smin(float a, float b, float k) {
float h = clamp(0.5 + 0.5*(a-b)/k, 0.0, 1.0);
return mix(a, b, h) - k*h*(1.0-h);
}
P.S. k값을 0~1 사이 값으로 테스트 하고 있는데, -1~0 사이로 변경하게 되면, Smooth Max 함수가 됨.
레퍼런스
http://www.viniciusgraciano.com/blog/smin/
https://iquilezles.org/www/articles/smin/smin.htm
https://www.youtube.com/watch?v=YJ4iyff7zbk
반응형
'Graphics > Graphics' 카테고리의 다른 글
Absorption and Scattering (흡수와 산란) (0) | 2020.08.11 |
---|---|
Perspective Shadow Map (PSM) (0) | 2020.08.05 |
Cascade Shadow Map (2) | 2020.07.10 |
VolumeLight (0) | 2020.06.24 |
Forward Plus Rendering (0) | 2020.05.26 |