목록분류 전체보기 (56)
momodudu.zip
이번 포스팅은 그래픽스에서 아주 기초적이고 간단한편이지만, 널리 쓰이는 퐁 조명 모델과 조명 적용에 관한 전반적인 설명이다. 퐁 조명은 총 4가지 항의 합으로 이루어진다. Diffuse, Specular, Ambient, Emissive light이다. Diffuse는 난반사를 의미하고, Specaular는 정반사, Ambient는 간접조명, Emissive light는 자체 발산광이라고 보면 된다. 난반사를 의미하며, 광원으로부터 점P까지의 벡터를 l, 점 P의 normal을 n으로 표현한다. 두 벡터 사이의 각이 작으면 작을수록 점 P는 더 많은 조명을 받게 될것이다. 즉, 벡터 l과 n이 정규화 되어있다면 점 P로 들어오는 빛의 양은 두 벡터의 내적값이라고 정의할 수 있다. 대신 조명을 받거나, 받..
이번 포스팅은 texture 매핑에 관한 포스팅이다. 실제로 texturing이라고 하면, image, 즉 color값만을 mesh에 입히는것으로 생각할 수 있는데 실제 texture는 color뿐만아니라 normal이나 depth도 가질 수 있다. 어쨌든, texture filtering란 한 mesh의 정점(x,y)에 대해서 (u,v)를 mapping하면 텍셀(tx,ty)를 얻을 수 있는데, uv는 [0,1]로 normalize된 정규화 좌표이므로 (x,y)에 uv를 곱하게 되면 텍셀 좌표는 실제로 부동소수점 값이다. 이를 처리하기 위해서 한 텍셀을 처리할 때 주변 텍셀들의 정보를 참고하고 결합하여 현재 텍셀을 결정한다. 이게 바로 texture filtering의 정의다. texture filter..
행렬 관련 포스팅은 전에도 glm 라이브러리를 쓰면서 간단하게 썼었는데, 변환 과정은 봐도봐도 부족하니까 오늘은 좀 더 응용단계? 그래픽스 이론 관점에서 보는 변환 행렬이다. 우리가 흔히 말하는 mvp매트릭스. 도대체 변환이 왜 이루어져야하고, 어떻게 이루어지는지에 대한 포스팅이다. 처음 그래픽스를 배울때 기초 이론이 없어서, 이걸 써야한다는건 알고 있었는데 도대체 왜쓰며, 무슨 원리인지에 대해 몇년동안 제대로 알지 못하고 썼다. 변환행렬 관련해서는 찾아봐도 별로 참고할만한 자료가 안나와서....(내가 못찾은걸수도) 직접 공부했던 내용들을 정리하면서 다시 써보고자 한다. 사실 OpenGL ES보다는 그래픽스 이론에 가까운 포스팅이다... 해당 포스팅은 라는 책을 많이 참고했다. 일단, transforma..
우리가 사용하고자 하는 vertex data는 DRAM, 즉 client단의 memory에 저장되어 있는것 뿐이다. 이를 graphic memory에 copy하기 위해 사용하는 명령어가 바로 glDrawArrays, glDrawElements같은 call이다. 하지만 매 draw call마다 CPUGPU간의 데이터 교환이 자주 일어나게 된다면 memory bandwidth로 인해 당연히 성능상에 문제가 발생하므로, CPU에서 그릴 vertex를 생성해놓고, "캐시"처럼 사용하고자 하는게 바로 VBO이다. OpenGL ES3.0에서는 vertex buffer인 GL_ARRAY_BUFFER와 index버퍼인 GL_ELEMENT_ARRAY_BUFFER , 두가지 buffer object 타입을 제공한다. 그 ..