목록Graphics (14)
momodudu.zip
이번 포스팅은 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 타입을 제공한다. 그 ..
간단한 예제를 다뤄보던중에, 아래와 같은 유튜브 채널을 발견했다. https://www.youtube.com/watch?v=GgGBR4z8C9o ShaderToy Tutorial에 대해 처음부터 차근차근 잘 설명해주고 있다. 원을 그리고 나서는 뭘해야될까..라고 생각중이었는데, 기초부터 따라가기에 아주 좋은것 같아서 이 강좌를 따라서 step by step으로 포스팅 해보려고 한다. float circle(vec2 uv, float r, float edgeWidth) { return smoothstep(r,r-edgeWidth,length(uv)); } void mainImage( out vec4 fragColor, in vec2 fragCoord ) { // Normalized pixel coordin..