분류 전체보기330 1. 멀티 쓰레드란? - 멀티 쓰레드를 설명하기 앞서 프로그램, 프로세스와 쓰레드에 대한 정리를 할 필요가 있다. 프로그램과 프로세스란?- 프로그램은 하드 디스크에 저장된 실행 코드를 의미한다. - 그리고 프로세스란 이 프로그램 자체와, 프로그램의 상태가 메모리에서 실행되는 '작업 단위'를 의미한다. 프로세스의 상태- 생성 : 프로세스가 생성 중인 상태 - 실행 : 프로세스가 CPU를 차지하여 명령어를 실행중인 상태 - 준비 : 프로세스가 CPU를 사용하고 있지는 않지만, 언제든지 사용할 수 있는 상태 (CPU가 할당되기를 기다리는 중) - 대기 : 프로세스가 입출력 완료, 시그널 수신 등의 이벤트를 기다리고 있는 상태 - 종료 : 프로세스의 실행이 종료된 상태 쓰레드란?- 프로세스보다도 작은 실행 흐름의 최소 단위 - 하나.. 2023. 12. 11. 19. 거울 반사 효과 구현 간혹 특정 맵이나 구간은 재질에 따라 물체가 반사되는 등의 효과를 구현해야 한다. 우리 프로젝트도 그런 구간이 존재했고, 심지어 대부분의 맵의 바닥이 그런 식으로 구현되어 있었다. 다른 작업들에 의해 거울 반사 구현이 뒤로 밀리다가 지금에서야 작업하게 되었다. 알아보니 반사 효과를 구현하기 위해서는 SSR(Screen Space Reflection) 기법과, 반사 행렬을 이용한 방법이 있었는데, SSR 기법은 해당 픽셀의 노말 벡터와 Depth Buffer를 계산해서 반사벡터를 만든 후 반사 벡터를 따라서 충돌된 픽셀의 색을 취하는 방법이라고 한다. 언리얼, 유니티 엔진과 같은 상용 엔진에서 사용하는 기법이라고 하는데, 아무래도 레이를 이용하다 보니 무겁지 않을까 생각하여 다른 방식을 고려해보기로 했다... 2023. 10. 7. 18. 그림자 완성 광원에 의한 그림자는 모두 Depth Map 기반으로 구현하였다. * Depth Map이란 ? 물체의 깊이값을 기록해두는 하나의 텍스쳐를 의미한다. - 물체가 그려지기 전 RenderShadow라는 함수를 통해 그림자를 그려줄 물체의 깊이값을 텍스쳐에 기록해둔 후, 빛을 적용할 때, 그 물체가 다른 물체에 가려져있는지를 Depth Map을 통해 확인해서 가려진 부분의 픽셀을 어둡게 해주는 원리이다. - 이 Depth Map에 깊이를 기록할 때 유념해야 할 것은 빛의 위치에서 물체의 깊이값을 측정해야 하는 것이다. - 빛이 그려질 때 이 카메라의 뷰행렬, 투영행렬을 곱한 VP행렬을 상수버퍼로 GPU로 넘겨주어, 셰이더에서는 Depth Map에 기록된 깊이값과 Vertex Shader로부터 넘겨받은 빛이 적.. 2023. 10. 7. 17. PhysX를 이용한 Mesh Collider 구현 Mesh Collider란? - 현재 우리 엔진은 모든 충돌 처리를 PhysX를 통해 처리하고 있는데, 한 가지 문제점은 구부러진 펜스같은 것들은 표현하기 어렵다는 것이다. - 현재 내가 구현해놓은 Geometry는 박스, 구, 캡슐인데, 플레이어의 접근을 막기 위해서는 펜스의 모양을 흉내낸 여러개의 박스 콜라이더를 잔뜩 붙여야 했다. - 팀원과 회의를 통해 유니티에서 메쉬 콜라이더라는 충돌체를 지원한다는 얘기를 들었고 이 충돌체는 메쉬가 가진 정점과 인덱스를 이용해서 충돌체를 만들어낸다. 이와 비슷한 것을 PhysX에서 TriangleMeshGeometry라는 이름으로 지원한다는 것을 어렴풋이 알고 있었기 때문에 PhysX Docs를 참고해서 기능을 구현할 수 있었다. - 우리 엔진에서 메쉬란 Mesh.. 2023. 9. 12. 이전 1 ··· 17 18 19 20 21 22 23 ··· 83 다음