목록2018/07 (2)
Graphics Programming
OpenGL 처음 배울 때 glUniform()으로 일일이 값 설정하게 짜놓은 코드를 아직도 쓰고 있다. UBO를 쓸까 말까 고민만 하다 이제야 도입하고 있다. 1. DX11에서 constant buffer를 써보니 넘 편했다. 2. model-view transform, camera position 등 한 프레임에서 일정한 유니폼들은 한 번 설정해놓고 잊어버리는 게 편하고 코드 잘못 짤 가능성도 적어진다. 원래는 셰이더 프로그램마다 이런 유니폼들을 각자 선언하고 셰이더 바뀔 때마다 업데이트했다. 이런 유니폼들은 한 프레임에 한 번만 설정하면 전부 맞거나 전부 틀리니 디버깅도 쉽다. 그런데 막상 써보니 넘 구렸다. packed, shared, std140 등 여러 레이아웃이 있지만 오프셋은 아무튼 GL ..
포워드, 디퍼드 렌더링만 만들다가... PBR을 하려니 레이트레이싱을 알아야 하는 것 같아서 뒤늦게 코딩해보고 있다. 맨날 책에서 읽고 만들어야지 하다가 말았는데 겨우 첫 걸음을 떼었다. 요즘 너무 예제 코드를 그대로 치는 것 같아서 기억에만 의존해서 코딩을 해봤는데 다행히 성공했다. 완전히 빡대가리가 되지는 않았나 보다. 그래도 머리가 예전처럼 잘 안 돌아가는 걸 느낀다. 벌써 이러면 나중에 어떡하지... 화면의 각 픽셀에 대응하는 3D 점은 무수히 많다. 그런 점들 중 하나를 uv로부터 얻어내고 가상의 카메라 위치에서 이 점으로 광선을 쏜다. 광선과 구가 교차하는지 검사하고, 그렇다면 구의 방정식에서 P(위치), N(법선) 등을 얻을 수 있다. 이후 셰이딩은 포워드/디퍼드에서 하던 것과 동일하다. 구..