O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

언리얼 탐구생활 - 학생들과 언리얼 엔진 소스 코드 분석하기

4.922 visualizações

Publicada em

언리얼 엔진 소스 코드는 게임 엔진을 공부하는 모든 프로그래머들을 위한 세계에서 가장 훌륭한 학습자료입니다. 현재 청강문화산업대학교에서는 학생들의 프로그래밍 능력 향상을 위해 언리얼 엔진 소스 코드를 분석하는 프로젝트를 만들어 진행하고 있습니다. 학생들의 프로그래밍 능력 향상을 위한 커리큘럼 설계와 진행 사례를 공유하는 한편, 언리얼 엔진 소스코드에서 인상깊었던 부분들을 정리해서 발표할 예정입니다.

Publicada em: Tecnologia
  • You might get some help from ⇒ www.HelpWriting.net ⇐ Success and best regards!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • I have always found it hard to meet the requirements of being a student. Ever since my years of high school, I really have no idea what professors are looking for to give good grades. After some google searching, I found this service ⇒ www.HelpWriting.net ⇐ who helped me write my research paper. The final result was amazing, and I highly recommend ⇒ www.HelpWriting.net ⇐ to anyone in the same mindset as me.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH }
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn }
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

언리얼 탐구생활 - 학생들과 언리얼 엔진 소스 코드 분석하기

  1. 1. 언리얼 탐구생활 학생들과 언리얼 엔진 소스코드 분석하기
  2. 2. UNREAL SUMMIT 2019 발표자 소개 청강문화산업대학교 게임콘텐츠스쿨 교수 부산 인디커넥트 페스티벌 총괄 운영 2017년 언리얼 데브 그랜트 수상 취미 : 사서 고생하기 ( 로타 섬 정글 체험기 ) 요즘 관심사 : Compute Shader 활용 Special thanks to Epic Games Korea! http://blog.dustinlee.me
  3. 3. UNREAL SUMMIT 2019 또 다른 취미 틈날 때, 가끔씩 언리얼 엔진 튜토리얼을 몰아서 작업하기
  4. 4. UNREAL SUMMIT 2019 튜토리얼 정리 중. 의외로 가장 조회수가 많았던 글 언리얼 C++ 프로그래밍에 대한 관심이 많은데 참고할 자료가 많이 없음. 언리얼 프로그래밍의 개념을 쉽게 설명할 수 있는 교재의 필요성 확인 원래는 모든 직군을 위한 블루프린트 튜토리얼을 만들려 했으나..
  5. 5. UNREAL SUMMIT 2019 언리얼 C++ 게임 개발의 정석 답답해서 언리얼 C++ 책을 집필 콘텐츠 개발에 필요한 필수적인 프로그래밍 내용 수록 청강문화산업대학교 2학년 공식 학습 교재 앞으로 두 번 더 등장합니다.
  6. 6. UNREAL SUMMIT 2019 발표 주제
  7. 7. UNREAL SUMMIT 2019 세션 내용 학교에서 지난 3년간 언리얼 엔진을 교육해 온 경험의 공유. 대학생 수준의 입문자를 위한 언리얼 엔진 프로그래밍 활용 가이드. 언리얼 엔진 어떻게 공부할 것인가? 방대한 언리얼 엔진, 목표에 맞게 학습에 활용하기
  8. 8. UNREAL SUMMIT 2019 청강문화산업대학교 – EPIC Games
  9. 9. UNREAL SUMMIT 2019 청강문화산업대학교 게임 콘텐츠 스쿨 커리큘럼 전체 커리큘럼의 구성 새로운 미션 : 3년 동안 언리얼 엔진을 어떻게 활용할 것인가? 2학년 : 엔진 기초의 이해 3학년 : 졸업 프로젝트 제작 4학년 : 개인 포트폴리오 언리얼 엔진을 잘 다루는 학생 배출 프로그래밍 능력은 기본!
  10. 10. UNREAL SUMMIT 2019 단계별 가이드 제시 1단계 : 언리얼 엔진 사용 경험 없음. 2단계 : C++을 활용해 언리얼 엔진 콘텐츠 제작 가능 3단계 : 언리얼 소스 코드를 스스로 분석하고 활용 가능 학생 별로 현재 어떤 단계에 속한지 진단하고 각 단계별로 학습 방법에 대한 가이드 제시
  11. 11. UNREAL SUMMIT 2019 1단계 : 언리얼 엔진의 시작
  12. 12. UNREAL SUMMIT 2019 1단계 학생의 성향 언리얼 엔진을 경험한 적이 없는 프로그래밍 지망생. 다른 게임 엔진 혹은 툴을 사용해 게임을 경험한 적이 있음. 기본적인 프로그래밍 문법과 간단한 객체 지향 관련 지식이 있음. 언리얼 엔진에 대한 막연한 기대와 환상. ( 그래픽이 좋아서! ) 전체적인 구조 설계 없이 쉽고 빠르게만 게임 제작을 경험해 봄 언리얼 엔진은 높은 C++ 숙련도가 필요할 것으로 지레 짐작
  13. 13. UNREAL SUMMIT 2019 자주 듣는 질문 Q) 이득우님 책으로 언리얼 엔진 프로그래밍을 시작하려고 합니다. 그 전에 공부할 C++ 책을 추천받습니다. 아니.. 제 책은 언제 하실려고..
  14. 14. UNREAL SUMMIT 2019 개인적인 생각 • 언리얼 소스나 예제에서 사용하는 C++은 그렇게 어려운 문법은 없음. • C++ 에 대한 지식보다 언리얼 런타임에 대한 이해가 더 중요 • C++ Native와 언리얼 런타임 간의 시스템 차이를 이해하기. C++을 마스터한 후에 진행한다는 생각보다 만들어보면서 모르는 부분을 해결하는 것을 권장
  15. 15. UNREAL SUMMIT 2019 학습 진도 1. 개발 환경의 설정 2. 언리얼 오브젝트와 런타임 3. 월드와 레벨의 생성 과정 4. 액터와 컴포넌트의 제작 5. 게임 모드와 폰 6. 미들웨어 기본 활용 ( 애니메이션, 물리, UI )
  16. 16. UNREAL SUMMIT 2019 1. 개발 환경의 설정 언리얼 엔진 프로젝트의 폴더 구성. 비주얼 스튜디오의 설정과 소스 관리 컴파일 속도에 대한 인내심. 개발에 필요한 로그 환경 설정. 핫 리로드의 문제 충분한 시간을 가지고 다양한 예외 상황에 대응하는 요령 갖추기 C++은 어떻게 컴파일을 진행하는가? Unity Build란 무엇인가? 빌드 속도를 높이기 위해 에픽은 어떤 노력을 해왔는가? C++을 주 언어로 사용하는 것에 대한 장점은?
  17. 17. UNREAL SUMMIT 2019 2. 언리얼 오브젝트와 런타임 C++ 객체와 언리얼 오브젝트의 차이점 언리얼 헤더 툴과 generated.h 파일 UPROPERTY 매크로와 옵션 설정 CDO , UClass , 생성자 코드 블루프린트 상속 언리얼 런타임에 대한 이해가 필수! 언리얼 프로그래밍을 이해하는 척도 핫 리로드의 문제점 파악하고 대응하기
  18. 18. UNREAL SUMMIT 2019 가장 효과적인 학습 방법 백문이 불여일 소스분석
  19. 19. UNREAL SUMMIT 2019 3. 월드와 레벨의 생성 과정 엔진 초기화 월드 생성 퍼시스턴트레벨 로딩 소스 코드를 디버깅하면서 엔진 초기화와 월드 생성 과정 확인하기 void UEngine::Init(IEngineLoop* InEngineLoop) { UE_LOG(LogEngine, Log, TEXT("Initializing Engine...")); ... void UWorld::InitializeNewWorld(const InitializationValues IVS) { ... PersistentLevel = NewObject<ULevel>(this, TEXT("PersistentLevel")); PersistentLevel->Initialize(FURL(nullptr)); PersistentLevel->Model = NewObject<UModel>(PersistentLevel); PersistentLevel->Model->Initialize(nullptr, 1); PersistentLevel->OwningWorld = this;
  20. 20. UNREAL SUMMIT 2019 4. 액터와 컴포넌트 액터란 무엇인가? 루트 컴포넌트의 역할 액터와 그에 속한 컴포넌트의 초기화 과정 Tick 루프는 어떻게 동작하는가? PostInitializeComponents와 Begin Play의 차이 콘텐츠가 돌아가는 전체 맥락을 이해하기 FORCEINLINE FTransform ActorToWorld() const { return (RootComponent ? RootComponent- >GetComponentTransform() : FTransform::Identity); } 액터의 트랜스폼 = 루트 컴포넌트의 트랜스폼
  21. 21. UNREAL SUMMIT 2019 5. 폰과 컨트롤러의 초기화 과정 게임에 플레이어가 입장하는 과정 폰의 초기화 과정 폰의 입력과 출력 캐릭터는 어떻게 설계되어 있는가? 언리얼 게임 플레이 프레임웍의 철학 이해 APlayerController* AGameModeBase::Login(... { APlayerController* const NewPlayerController = SpawnPlayerController(InRemoteRole, Options); void AGameModeBase::PostLogin(APlayerController* NewPlayer) { HandleStartingNewPlayer(NewPlayer); APlayerController* UWorld::SpawnPlayActor(… { APlayerController* const NewPlayerController = GameMode->Login(… ... GameMode->PostLogin(NewPlayerController);
  22. 22. UNREAL SUMMIT 2019 6. 미들웨어 기본 활용 애니메이션 시스템 물리 시스템 UI 제작과 이벤트 연동 책과 여러 예제를 보면서 학습하기 블루프린트로 시작하되, 나중에는 C++코드로만 만들어보기
  23. 23. UNREAL SUMMIT 2019 개인 프로토타입 제작 사례 Stylish Action Prototype by 오지후 https://www.youtube.com/watch?v=4_UdjJdHnL0
  24. 24. UNREAL SUMMIT 2019 2단계 : 팀 프로젝트
  25. 25. UNREAL SUMMIT 2019 2단계 학생의 성향 언리얼 엔진으로 프로토타입 콘텐츠를 만드는데 불편함이 없음. 인터넷 검색 등을 통해 다양한 콘텐츠 제작 시도. 언리얼 엔진에 대한 자신감에 취하는 시기
  26. 26. UNREAL SUMMIT 2019 팀 프로젝트의 경험 팀 프로젝트의 경험 : 10~15명의 팀 구성 자체 제작 : 리소스 제작에 대한 가이드 제시 필요. 엔진의 틀을 벗어난 기획 내용의 구현 혼자 혹은 3명 내에서 프로토타입 제작 언리얼 엔진에 맞춰진 애셋의 활용 엔진의 틀 안에서 콘텐츠 기획 점프 업의 필요성 체감 청강대 졸작은 자체 제작으로 게임을 만듬
  27. 27. UNREAL SUMMIT 2019 학습 진도 1. 팀 프로젝트 환경 설정 2. 프로젝트 전용 시스템 구축 3. 멀티 플레이 게임 개발 프로젝트에서 확장할 수 있는 다양한 옵션을 제시 각 프로젝트에 맞는 프로젝트 시스템 설계 & 노하우 공유
  28. 28. UNREAL SUMMIT 2019 1. 팀 프로젝트를 위한 개발 환경 소스 컨트롤과 협업 도구 분산 빌드 시스템 구축 Derived Cache 관리 Swarm 분산 빌드 팀 프로젝트에서 고려할 언리얼의 관리 시스템 학생 레벨에서 구축은 가능하나 프로젝트의 특성/규모의 한계가 존재
  29. 29. UNREAL SUMMIT 2019 1. 팀 프로젝트를 위한 개발 환경 소스 컨트롤과 협업 도구 분산 빌드 시스템 구축 Derived Cache 관리 Swarm 프로젝트 팀들의 다양한 솔루션 조사 Git-LFS 도입 Increbuild 평가판 Derived Cache 서버 다수 PC에 분산 세팅
  30. 30. UNREAL SUMMIT 2019 1. 팀 프로젝트를 위한 개발 환경 소스 컨트롤과 협업 도구 분산 빌드 시스템 구축 Derived Cache 관리 Swarm GitLab , Azure DevOps 시도. 특정 상황에서 매우 좋지만 평상시는.. PC 프로젝트에서 큰 효과를 체감 못함. 효과 좋음. 빌드 타임을 줄이기 위한 다양한 테스트
  31. 31. UNREAL SUMMIT 2019 1. 팀 프로젝트를 위한 개발 환경 빌드 타임 감소를 위한 자발적인 리서치 201713036 홍규태
  32. 32. UNREAL SUMMIT 2019 1. 팀 프로젝트를 위한 개발 환경 프로젝트 팀 간의 유용한 정보 공유 201713036 홍규태
  33. 33. UNREAL SUMMIT 2019 2. 프로젝트 전용 시스템 구축 인공지능 에디터 확장 추가 플러그인 활용 게임 기획에 따라 시스템을 설계하고 기반 기능을 모듈화 자체적으로 직접 구현
  34. 34. UNREAL SUMMIT 2019 2. 프로젝트 전용 시스템 구축 언리얼 엔진의 다양한 인공지능 시스템의 분석 201513102 장진혁
  35. 35. UNREAL SUMMIT 2019 2. 프로젝트 전용 시스템 구축 코드를 분석해 프레임웍에 맞춰 사용할 수 있겠지만 그럴 바에야 직접 만들어서 쓰겠다는 현실적인 결론 ( 소스 분석은 필요! ) 201513102 장진혁
  36. 36. UNREAL SUMMIT 2019 2. 프로젝트 전용 시스템 구축 인공지능 에디터 확장 추가 플러그인 활용 에디터 확장까지 커스터마이징하기에는 시간과 필요성이 부족 자체적으로 직접 구현 현재 시도 중..
  37. 37. UNREAL SUMMIT 2019 2. 프로젝트 전용 시스템 구축 인공지능 에디터 확장 추가 플러그인 활용 자체적으로 직접 구현 현재 시도 중.. 사운드 기능의 보강 외부 모듈과 엔지니어링을 통한 기능 개선
  38. 38. UNREAL SUMMIT 2019 2. 프로젝트 전용 시스템 구축 외부 모듈 연동 : Wwise를 활용한 게임 내 RTPC 기능 적용 201513086 김병민
  39. 39. UNREAL SUMMIT 2019 3. 멀티플레이 게임 개발 멀티 플레이 아키텍쳐에 대한 이해 언리얼 엔진으로 멀티플레이 게임 제작 IOCP 기반으로 자체 서버를 구현하고 연동 언리얼 엔진의 네트웍 기능의 활용보다 자체 구현에 중점
  40. 40. UNREAL SUMMIT 2019 3. 멀티플레이 게임 개발 IOCP 기반 서버 프레임웍 설계. 홀펀칭은 포기하고 중앙 서버는 릴레이 하는 방식으로. 시간과 목적에 맞는 최소한의 스펙 설계. 학생 수준에서 구현할 수 있는 서버 스펙 구현해보기
  41. 41. UNREAL SUMMIT 2019 3. 멀티플레이 게임 개발 현재 팀 상황에서 생산성 높이는 방법의 고민 201413151 이장형
  42. 42. UNREAL SUMMIT 2019 3. 멀티플레이 게임 개발 졸작의 특성과 목적을 명확하게 파악하기 201413151 이장형
  43. 43. UNREAL SUMMIT 2019 3. 멀티플레이 게임 개발 서버를 직접 제작해 연동하는 귀중한 경험 201413151 이장형
  44. 44. UNREAL SUMMIT 2019 2019 청강 크로니클 2018 청강 크로니클 행사 영상 https://www.youtube.com/watch?v=FgpG7ZfioJc 위 게임의 제작 결과는 2019년 청강 크로니클 행사에서 공개됩니다. 현업 개발자분들과 함께하는 행사가 되었으면 합니다. ( 차후 언리얼 공식 카페에 공지 )
  45. 45. UNREAL SUMMIT 2019 3단계 : 언리얼 탐구 생활
  46. 46. UNREAL SUMMIT 2019 대상 학생 학생 수준에서 할 수 있는 프로젝트의 체험. 게임 엔진을 사용하는 것에 대한 회의. 엔진의 동작 원리와 로우 레벨에 대한 호기심. 언리얼 탐구 생활 프로젝트 발족
  47. 47. UNREAL SUMMIT 2019 학습 진도 1. C++ 테스트와 벤치마킹 환경 설정 2. 자료구조와 알고리즘 분석 3. 게임에 필요한 수학과 물리 4. 언리얼의 행렬 유도 5. 렌더링 파이프라인 모방
  48. 48. UNREAL SUMMIT 2019 1. 테스트와 벤치마킹 환경 설정 구글 벤치 마크 : https://github.com/google/benchmark
  49. 49. UNREAL SUMMIT 2019 2. 자료구조와 알고리즘 분석 기출 문제의 수집 활용 ● 유형 별로 알고리즘 문제 분류 ● 각자 알고리즘 문제 풀이 ● Test 케이스를 작성해 결과 검증 ● Google Benchmark를 사용해 퍼포먼스 측정 ● 우승자는 자신의 알고리즘 설명
  50. 50. UNREAL SUMMIT 2019 2. 자료구조와 알고리즘 분석 예) 약수 문제 : 임의 수의 약수 중에서 n 번째 약수를 반환하는 함수를 만드시오. 무턱대고 STL 함수를 사용하는 방식에 대한 경각심 일으키기
  51. 51. UNREAL SUMMIT 2019 2. 자료구조와 알고리즘 비교 분석 자료구조를 개선하면 어떤 장점이 생기는가? ● A* 알고리즘 : Priority Queue 와 List 구현의 비교 ● Heap으로 Priority Queue를 구현하기 ● 언리얼에서 직접 구현해 적용하기 ● 언리얼 소스와 비교 확인하기 : AI 모듈의 FGraphAStar O(N)을 O(logN)으로 향상시키기
  52. 52. UNREAL SUMMIT 2019 3. 게임에 필요한 수학과 물리 코어 모듈의 Math 폴더 분석 언리얼의 벡터(FVector)와 행렬(FMatrix) 소스를 모방해 스스로 구축 게임에서 어떤 종류의 함수들이 필요한지 확인해볼 수 있음. 빠르게 연산할 수 있는 다양한 테크닉을 확인 언리얼 소스는 굉장히 좋은 레퍼런스 자료!
  53. 53. UNREAL SUMMIT 2019 3. 게임에 필요한 수학과 물리 코어 모듈의 장점 엔진의 핵심 엔지니어링 스킬이 이곳에 다 모여 있음. 언리얼이 없어도 일반 C++에 쉽게 이식 가능 친절한 주석과 설명 Core 모듈의 Math 폴더부터.
  54. 54. UNREAL SUMMIT 2019 3. 게임에 필요한 수학과 물리 효과적인 벡터와 행렬 라이브러리의 설계 빠른 행렬 연산을 위한 SIMD 명령어의 활용 다양한 수학 함수에 대한 고찰 고속 역 제곱근 ( FMath::InvSqrt ) 고속 사인/코사인 함수 구하기 ( FMath::SinCos) 수학 연산에 대한 넓은 시야 제공
  55. 55. UNREAL SUMMIT 2019 3. 게임에 필요한 수학과 물리 실제로 벤치마크로 성능 테스트 해보기 SinCos_1 : 언리얼의 FMath::SinCos 함수 SinCos_2 : 기본 sin , cos 함수 BM_Array : 각 요소별로 곱해서 계산한 행렬 곱 BM_Sse : SIMD를 사용해 4개씩 계산한 행렬 곱 실제 퍼포먼스와 결과를 측정해 비교 분석
  56. 56. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 언리얼의 회전 행렬 유도하기 : FRotationTranslationMatrix 언리얼의 뷰 행렬 유도 : FLookAtMatrix 언리얼의 투영 행렬 유도하기 : FPerspectiveMatrix 소스에 행렬의 최종 계산 결과가 나와 있음.
  57. 57. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 FRotationTranslationMatrix : 회전이동행렬 FMath::SinCos(&SP, &CP, FMath::DegreesToRadians(Rot.Pitch)); FMath::SinCos(&SY, &CY, FMath::DegreesToRadians(Rot.Yaw)); FMath::SinCos(&SR, &CR, FMath::DegreesToRadians(Rot.Roll)); M[0][0] = CP * CY; M[0][1] = CP * SY; M[0][2] = SP; M[0][3] = 0.f; M[1][0] = SR * SP * CY - CR * SY; M[1][1] = SR * SP * SY + CR * CY; M[1][2] = - SR * CP; M[1][3] = 0.f; M[2][0] = -( CR * SP * CY + SR * SY ); M[2][1] = CY * SR - CR * SP * SY; M[2][2] = CR * CP; M[2][3] = 0.f;
  58. 58. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 언리얼 에디터의 회전 인터페이스를 바탕으로 회전 행렬을 유도하기 언리얼은 왼손 좌표계를 사용한다. 이 중 거꾸로 동작하는 인터페이스는? X축 회전 : Roll Y축 회전 : Pitch Z축 회전 : Yaw 이론을 바탕으로 소스와 동일한 결과가 나오도록 유도해보기
  59. 59. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 FLookAtMatrix : 뷰 기저 공간 생성 행렬 const FVector ZAxis = (LookAtPosition - EyePosition).GetSafeNormal(); const FVector XAxis = (UpVector ^ ZAxis).GetSafeNormal(); const FVector YAxis = ZAxis ^ XAxis; for (uint32 RowIndex = 0; RowIndex < 3; RowIndex++) { M[RowIndex][0] = (&XAxis.X)[RowIndex]; M[RowIndex][1] = (&YAxis.X)[RowIndex]; M[RowIndex][2] = (&ZAxis.X)[RowIndex]; M[RowIndex][3] = 0.0f; } M[3][0] = -EyePosition | XAxis; M[3][1] = -EyePosition | YAxis; M[3][2] = -EyePosition | ZAxis; M[3][3] = 1.0f; 기저 벡터, 외적, 역행렬의 이해
  60. 60. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 FPerspectiveMatrix : 투영행렬의 코드 FORCEINLINE FPerspectiveMatrix::FPerspectiveMatrix(float HalfFOV, float Width, float Height, float MinZ, float MaxZ) : FMatrix( FPlane(1.0f / FMath::Tan(HalfFOV), 0.0f, 0.0f, 0.0f), FPlane(0.0f, Width / FMath::Tan(HalfFOV) / Height, 0.0f, 0.0f), FPlane(0.0f, 0.0f, ((MinZ == MaxZ) ? (1.0f - Z_PRECISION) : MaxZ / (MaxZ - MinZ)), 1.0f), FPlane(0.0f, 0.0f, -MinZ * ((MinZ == MaxZ) ? (1.0f - Z_PRECISION) : MaxZ / (MaxZ - MinZ)), 0.0f) ) { }
  61. 61. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 OpenGL의 투영 행렬 공식을 기반으로 언리얼 투영 행렬을 유도. 그래픽 API 별 - View 공간의 차이 - NDC 공간의 차이 - 뎁스 값의 이해 투영 행렬의 최종 유도 언리얼의 행렬 계산 방식과 투영 공간 식 유도하기
  62. 62. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 https://blog.naver.com/fear2002/221535494161
  63. 63. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 행렬 곱에 대한 이해 그래픽스에서 어떤 행렬들이 필요한지에 대한 필요성 인식 BM_EachMatrix : 점과 각 Scale, Rotation, Translation 행렬의 곱 BM_OneMatrix : 점과 ScaleRotationTranslation 행렬의 곱
  64. 64. UNREAL SUMMIT 2019 4. 언리얼의 행렬 유도 SceneView.h /** ViewToClip : UE4 projection matrix projects such that clip space Z=1 is the near plane, and Z=0 is the infinite far plane. */ FMatrix ProjectionMatrix; /** ViewToClipNoAA : UE4 projection matrix projects such that clip space Z=1 is the near plane, and Z=0 is the infinite far plane. Don't apply any AA jitter */ FMatrix ProjectionNoAAMatrix; /** ClipToView : UE4 projection matrix projects such that clip space Z=1 is the near plane, and Z=0 is the infinite far plane. */ FMatrix InvProjectionMatrix; // WorldToView.. FMatrix ViewMatrix; // ViewToWorld.. FMatrix InvViewMatrix; // WorldToClip : UE4 projection matrix projects such that clip space Z=1 is the near plane, and Z=0 is the infinite far plane. */ FMatrix ViewProjectionMatrix; // ClipToWorld : UE4 projection matrix projects such that clip space Z=1 is the near plane, and Z=0 is the infinite far plane. */ FMatrix InvViewProjectionMatrix; // HMD WorldToView with roll removed FMatrix HMDViewMatrixNoRoll; … 언리얼 엔진 내부에서 사용되는 다양한 행렬의 예시
  65. 65. UNREAL SUMMIT 2019 5. 렌더링 파이프라인 모방 지금까지 배운 내용을 종합해 소프트웨어로 렌더링 파이프라인 구축하기 학생들에게 주어지는 API - 텍스쳐 픽셀에 접근하는 함수 - 화면에 점 찍는 함수 행렬만 잘 이해한다면 큰 어려움 없이 구현 가능
  66. 66. UNREAL SUMMIT 2019 5. 렌더링 파이프라인 모방 GDI의 SetPixel 함수로만 만드는 소프트 렌더러. 직접 VS / PS 파이프라인 설계해보기
  67. 67. UNREAL SUMMIT 2019 5. 렌더링 파이프라인 모방 https://docs.unrealengine.com/en-us/Engine/Performance/RenderDoc 렌더독(RederDoc)의 활용 렌더링 진행 과정과 렌더링 데이터의 파악
  68. 68. UNREAL SUMMIT 2019 달성 목표 이 자체가 대단한 결과물은 아닙니다. 하지만 기본 이론이 튼튼해야 다양한 작품 제작이 가능
  69. 69. UNREAL SUMMIT 2019 개인 포트폴리오 작업 사례 동굴 제작이 가능한 Voxel Terrain Engine https://www.youtube.com/watch?v=4_UdjJdHnL0
  70. 70. UNREAL SUMMIT 2019 정리 C++ 기반의 대형 프로젝트 개발 환경에 대한 이해가 선행되는 것이 중요. Core모듈을 기반으로 다양한 커리큘럼 설계가 가능. 언리얼 엔진으로 프로그래머가 재능을 펼칠 수 있는 다양한 기회가 존재. 언리얼 탐구 생활을 통해 유용한 정보를 꾸준히 축적하겠습니다!
  71. 71. UNREAL SUMMIT 2019 감사합니다!

×