Loading...
2020. 12. 31. 08:14

Chromatic Aberration 4 (색수차)

이전 글- Chromatic Aberration 1 (색수차)- Chromatic Aberration 2 (색수차)- Chromatic Aberration 3 (색수차) 이전 글들에서 Chromatic Aberration(CA)에 대해서 알아보았다.CA의 기본 개념은 간단했고 응용방법들도 여럿 있었다.실제로 게임에서 사용되고 있는 곳이 많은 효과다. 게임에서 많이사용 하는건 크게 두가지 정도인듯 하다.단순 uv 차이로 인한 CA, 그리고 방사형 블러를 이용한 CA.단순 uv차이로 인한 CA는 화면의 임펙트를 더해주고 방사형 블러를 이용한 CA는시작점에 집중하게 하는 느낌이 난다. 실제로 구글에서 Chromatic Aberration으로 검색하면 수많은 이미지를 볼 수 있다.실제로 CA는 사진에서는 카메라..

2020. 12. 29. 17:29

Chromatic Aberration 3 (색수차)

이전 글- Chromatic Aberration 1 (색수차)- Chromatic Aberration 2 (색수차) 색수차 활용에 대해서 다룬다.코사인 함수를 적극적으로 이용해 보자. 색수차의 기본 개념은 결국 r,g,b 채널에 대한 uv를 따로 쓰는 것인데 cos 그래프를 활용해서 r, g, b 채널을 균형있게 쓸 수 있다.그림 1 (코사인 그래프) 위 이미지가 코사인 함수값이다.이는 0(0도)에서 1, 3.14(180도)에서 -1을 가지는 대칭형 그래프이다.r채널 b채널 b채널 그림 2 (코사인 그래프 일부) 그림 3 (코사인 그래프 일부) 그림 4 (코사인 그래프 일부) 위 그림과 같이 r,g,b 채널을 각각 그림 2,3,4의 값으로 사용한다. 그리고 위 코사인 그래프의 변화값을 부드럽게 사용하기위..

2020. 12. 28. 16:47

Chromatic Aberration 2 (색수차)

이전 글- Chromatic Aberration 1 (색수차) 이전 글에서 Chromatic Aberration(색수차)를 간단히 구현하는 방법을 알아 보았다.추가로 좀 더 그럴듯하게 보이도록 몇가지 응용을 해 보자.rgb를 다른 uv로 사용한다는 기본 개념으로 하면 여러가지 응용이 가능하다 uv의 x축. 왼쪽 0 에서 오른쪽 1 ( 이값은 사용하는 환경에 따라 다르며 shader toy 기준)그림1 uv의 y축. 아래쪽 0 에서 위쪽 1 ( 이값은 사용하는 환경에 따라 다르며 shader toy 기준)그림2 위 두가지를 조합해서 0~1 사이의 uv값을 -1~1사이로 변경vec2 coords = (uv - 0.5) * 2.0; 이 값을 제곱하면 1~0~1의 값이 된다.그러면 중앙으로 갈수록 0에 가깝고 ..

2020. 12. 28. 00:48

Chromatic Aberration 1 (색수차)

색수차란 무었인가?렌즈를 사용하는 광학계에서 유리의 굴절률이 빛의 파장에 따라 다르기 때문에생기는 수차로 생성원인에 때라 종색수차와 횡색수차로 분류된다. 렌즈를 구성하는 광학재료의 굴절률은 빛의 파장에 따라 달라진다. 종색수차(Longitudinal/ Axial Chromatic Aberration, 줄여서 Longitudinal CA 또는 Axial CA) 는 상점의 위치가 파장에 따라 어긋나 색이 번져서 흐린상이 형성. 횡색수차(Lateral/ Yanal Chromatic Aberration)는 파장에 따라 초점거리, 즉 상의 배율이 변하기 때문에 상점의 위치가 상면위의 주변으로 치우쳐 어긋나고 색의 테두리가 생긴다. 이들 현상이 색수차이다. 색수차는 굴절률과 그 파장 의존성이 다른 여러 종의 광학재..

밉맵 텍스쳐링

이 글은 원문(MipMap Textureing)을 정리한 내용입니다.원문 읽는걸 강하게! 추천합니다. 밉맵이 없다면? : 결점(아티펙트)가 보임/ 세밀한 부분에서 엘리어싱 발생 해결책은?: 렌더링 하기 전에 디테일을 필터링 한다. 텍스쳐가 입혀진 오브젝트들은 뷰포트에서 다른 거리로 보여질 수 있다.텍스쳐 이미지 에서 어느 디테일의 레벨을 사용해야 할까?너무 높은 해상도를 사용하면 엘리어싱이 발생하고 너무 작은 해상도를 사용하면 디테일이 너무 떨어져 보인다.그렇다면 오브젝트와 뷰포트와의 거리에 따라 디테일 정도를 다른 레벨로 사용하자!1983년에 소개된 "Pyramidal Parametrics"라는 글에서 처음 "mipmap"이라는 단어를 사용.mip = multum in parvo (작은 장소에 많은 것..

2019. 8. 16. 22:58

Specular Showdown in the Wild West

원문 : https://blog.selfshadow.com/2011/07/22/specular-showdown/개인 공부를 위해 번역하였으며 원문을 읽길 적극 추천합니다. 요즘 엘리어싱 문제로 고민이 많다.기존 사용하던 fxaa 대신 smaa로 바꿔서 사용하고 있긴 한데 그럼에도 불구하고 specular에 의한 반짝임은도저히 고칠수가 없었다.몇가지 아이디어를 테스트 해보기도 했다.specular의 power, intensity를 거리 또는 pixel의 depth를 기반으로 한 감쇠정도가 그나마 괜찮았다.그리고 구글링중 괜찮은 내용이 있어 번역했다.번역은 적당히 했으니 원문을 추천.!! // 이 색상은 개인적으로 추가한 내용. 말에 안장을 얹자!이 글에서는 잘 동작하는 specular lighting을 위..

2019. 6. 15. 14:55

Clipmaps

원문 : Clipmaps원문을 보시길 적극 추천. 요약클립맵은 지형에 매우 높은 해상도의 텍스쳐를 매핑할수 있게 하는 SGI 워크스테이션에서 처음 구현된 기능이다.원본 SGI 구현은 매우 전문적인 맞춤형 하드웨어가 필요했다.NVIDIA GeForce 8800의 고급기능은 현재 소비자의 하드웨어를 사용하여 같은 알고리즘을 허용한다.비록 현재 API들과 GeForce 8800가 8192 크기의 텍스쳐를 직접적으로 지원할 지라도, 이 크기가 비행 시뮬레이션같은 넓은 경치를 말할때는 충분하지 않을지도 모른다.전체 경치에 하나의 텍스쳐를 사용하는 이 아이디어는 전체 경관 텍스쳐를 한번에 디자일 할 수 있을 뿐 아니라파라미터화 시키는 것도 간단하다.큰 텍스쳐는 몇개의 텍스쳐를 사용하여 블렌딩 하는 기존 방식에 비해..

shader에서 if 와 lerp의 성능은?

나의 궁금증은 아래와 같다. 1. shader 코드에서 동적분기로 return 시키는 것은 최적화에 도움이 되는가?- 정적분기라면 굳. 확실히 최적화에 도움이 될듯. 컴파일에서 부터 정해지니까.- 동적분기라면 비교값이 상수가 아닌 변수이므로 런타임에 정해진다.- 마소 문서를 보면 if문에도 [branch]와 [flatten] 가 있으며 branch의 경우 if문의 부울이 먼저 평가 되므로 맞는 부분만 실행되고, flatten은 if의 양쪽 다 계산하고 맞는 부분을 결과값으로 선택하는 방식이다. 다만 branch는 tex2d 와 같은 그라디언트 함수를 쓰면 작동하지 않는다. 이는 주변 프래그먼트에 종속적이므로 실행되어야 하며, 각 프래그먼트를 건너뛰지 않아야 하기 때문이다. 2. if문 자체가 주는 부하를..