본문 바로가기

유니티

(39)
[Unity] 가비지 컬렉션, 베스트 프래틱스 이 글은 unity에서의 가비지 컬렉션에 대해 알아보기 위해 정리한 글입니다. 초반부에는 유니티 공식문서를 기반으로 내용을 정리하고, 후반에는 참고한 글들과 개인적 경험을 바탕으로 글을 작성하겠습니다. 공식문서(매뉴얼) 정리 내용 Unity는 응용 프로그램에서 메모리를 처리하기 위해 세 가지 메모리 관리 레이어를 사용합니다 - 관리되는 메모리: 관리되는 힙과 가비지 컬렉터를 사용하여 자동으로 메모리를 할당하는 제어되는 메모리 레이어 - 관리되지 않는 메모리: 가비지 컬렉터를 사용하지 않는 메모리 - 네이티브 메모리: Unity에서 엔진을 구동하는 데 사용하는 c++ 메모리. 가비지 컬렉터는 애플리케이션에서 메모리를 관리하는 가장 쉬운 방법이지만, 메모리 해제/할당 타이밍을 예측할 수 없기 때문에 불안정한..
[렌더링] 셰이더 기초 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 정점 변형 - 컬러 픽셀 - 셰이더 프로퍼티 활용하기 - 버텍스에서 프래그먼트로 데이터 전달하기 - 컴파일된 셰이더 코드 검사 - 타일링 및 오프셋을 사용하여 텍스쳐 샘플링 1. 기본 씬 Unity에서 새 씬을 생성할 떄 기본 카메라와 디렉셔널 라이트로 시작합니다. 씬에 구를 추가하고 원점에 배치한 다음 카메라를 바로 앞에 배치합니다. 이 씬은 매우 단순한 장면이지만 이미 많은 복잡한 렌더링이 진행 중입니다. 렌더링 ..
[렌더링] 행렬 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 큐브 그리드를 만듭니다. - 크기 조정, 위치 지정 및 회전을 지원합니다. - 변환행렬로 변형을 수행합니다. - 간단한 카메라 투영을 생성합니다. 렌더링에 기본에 대한 튜토리얼 시리즈의 첫 번째 파트입니다. 변환 행렬을 다룹니다. 렌더링 시리즈를 본격적으로 시작하기에 앞서 절차적 그리드로 시작하는 메시 기본 시리즈를 살펴봅니다. 그러면 메시가 어떻게 작동하는지 이해할 수 있습니다. 이 시리즈에서는 이러한 메시가 실제로..
[메시 기초] 메시 변형 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 물체에 광선을 투사하고 디버그 라인을 그립니다. - 힘을 정점의 이동량으로 변환합니다. - 스프링과 댐핑으로 형태를 유지합니다. - 오브젝트의 변형을 보정합니다. 1. 씬 설정 중앙에 하나의 큐브 구체가 있는 씬부터 시작하겠습니다. 변형을 제대로 테스트 하기 위해서는 구에 적절한 수의 정점이 포함되어야 합니다. 구의 격자 크기를 20으로 설정하고 반지름을 1로 설정했습니다. 2. 매시 변형 변형을 처리할 'MeshDe..
[메시 기초] 큐브 구체 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 정육면체를 구체로 변환합니다. - Unity에서 매핑을 시각화합니다. - 변환을 비판적으로 검토합니다. - 수학을 사용하여 더 나은 접근 방식을 생각해 보세요 1. 둥근 큐브 조정하기 지난 튜토리얼에서 둥근 큐브로 완벽한 구를 만들 수 있다는 것을 눈치 채셨을 것입니다. 큐브의 세 차원의 값을 모두 같은 값으로 변경하고 Roundness를 해당 크기의 절반으로 설정합니다. 만약 이 컴포넌트로 얻고 싶은 메시가 구라고 ..
[메시 기초] 둥근 큐브 렌더링 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 큐브에 둥근 모서리를 추가합니다. - 법선을 정의합니다 - 서브 메쉬를 사용합니다 - 사용자 지정 셰이더를 만듭니다. - 프리미티브 콜라이더를 결합합니다. 1. 큐브 합성하기 평범한 큐브는 그렇게 특별하지 않습니다. 둥근 큐브로 만들어 봅시다. 둥근 큐브로 만들어봅시다! 스크립트 파일과 클래스 이름을 RoundedCube로 변경합니다. Unity는 컴포넌트를 계속 추적하지만 연결이 끊어지면 스크립트를 다시 드래그해서 ..
[메시 기초] 큐브 렌더링 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - seamless mesh로 큐브를 만듭니다 1. 큐브 합성하기 2D 격자 문제를 해결한 다음 단계는 3D 구조를 절차적으로 생성하는 것입니다. 큐브를 살펴보겠습니다. 개념적으로 큐브는 3D 볼륨을 둘러싸도록 배치되고 6개의 2D면으로 구성됩니다. 그리드의 6개의 인스턴스로 이 작업을 수행할 수 있습니다. 이렇게 하면 6개의 개별 메쉬로 구성된 큐브가 생깁니다. 보기에는 괜찮지만 실용적이지는 않습니다. Mesh.Comb..
[메시 기초] 절차적 그리드 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 요약 - 점으로 그리드를 만듭니다. - 코루틴을 사용하여 점의 배치를 분석합니다. - 삼각형으로 표면을 정의합니다. - 법선을 자동으로 생성합니다. - 텍스처 좌표와 탄젠트를 추가합니다. 이 튜토리얼에서는 정점과 삼각형으로 구성된 간단한 그리드를 만들어 보겠습니다. 1. 렌더링이란 유니티에서 무언가를 시각화하려면 메시를 사용합니다. 이것은 다른 프로그램에서 익스포트한 3D모델일 수도 있고, 유니티에서 절차적으로 생성된 메시일 수도 있습니다. 스프라이트, UI, 파티클 시스템도 메시를 사용할 수 있으며, Unity에서도 메시를 사..