Loading...
2023. 1. 10. 23:21

ray casting을 이해해 보자..

목표 ray를 이해하고 구현해보자. ray(광선) casting(투사)는 무었인가? 레이캐스팅에 대해 알기 위해서는 이 기술의 탄생 배경을 좀 살펴봐야 한다. GI(전역 조명모델)와 LI(지역 조명모델)을 보면 GI의 경우 다른 물체면에서 반사되어 입사하는 빛까지 고려한 조명모델이며 LI는 광원으로부터 직접 물체면으로 입사되는 빛만을 고려한 모델이다. 보다 사실적인 화면을 얻기 위해서는 전역조명 모델을 적용하고자 하였으며 그 시도중 하나가 레이캐스팅이다. 단순히 카메라(관찰자)로부터 광선이 출발한다고 하고, 결과적으로 이 빛의 진행 경로를 막고 있는 가장 가까운 물체를 찾는 것이다. 레이캐스팅은 정확하게 말하자면 전역조명을 위한 것은 아니고 가시면 검출을 위한 것이다. 카메라 시점에서 광선을 한번 던진 ..

(OpenGL) 도넛,큐브,원,사각형 그리기

2006.09.20 자료 옮김 #include /* includes gl.h glu.h */ void drawScene( ); int main ( int argc, char **arg ) { //초기화 함수들 glutInit함수는 GLUT라이브러리를 초기화하고 윈도우 운영체제와 연결하여 하나의 세션을 //형성한다. glutInitDisplayMode( GLUT_RGBA ); // 디스플레이 모드 설정, 윈도우의 기본 컬러모드를 RGB로 생성. glutInitWindowPosition( 50,50 ); // 윈도우의 위치지정, gl 실행화면 창의 위치. glutInitWindowSize ( 500,500 ); // 윈도우의 크기 지정,윈도우 폭, 윈도우 넓이. glutCreateWindow( "Exampl..

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을 위..