TECHARTNOMAD | MAZELINE.TECH

TECH.ART.FLOW.IO

[번역] 어떤 신입의 바이트덴스 게임 엔진 파트 인터뷰 경험담

jplee 2026. 2. 4. 02:58

역자의 말: 최근 스마일게이트 기업 컨설팅 업무를 종료 했는데 그렇면 시간이 더 많아질 거라고 생각했지만 어디선가 찾아온? 오랜 후배와 게임개발 작은걸 하나 갑자기 들어가 버렸습니다. 그리고 보니까 계절이 꺾이는 시점이라 이상하게 너무 피곤하고 졸리고 그렇더군요. 그래서 요 몇 주 업데이트가 지지부진 했습니다.

2022년에는 저도 중국 바이트덴스 조석광년 사업부의 시니어메니지로 일을 하고 있을때인데요... 어느 중국인 신입의 면접 후기가 눈에 띄어서 올려봅니다. 이 중국인 친구는 경력직이 아니라 실무 3차 면접정도까지 했네요.

저는 기억에 근거하면 6차 아니면 7차 면접까지 봤습니다. 장장 두 달동안... ;;;; 한달 반이 될 즘.... 이거 뽑는다는거야 만다는거야? 그런 생각이 들더라고요.


원문 작성자: AKG4e3


들어가며

본교 컴퓨터공학과 대학원 입시를 쳤고 성적은 그럭저럭 나왔지만, 진학하고 싶지 않았습니다. 게다가 이전에 그래픽스 기초 지식을 조금 독학했던 게 있어서, 시험 끝나자마자 한 달 동안 Unity를 미친 듯이 공부한 뒤 여기저기 이력서를 넣기 시작했습니다.

지원 상태: 춘계 채용 조기 전형(Early batch), 현재 오퍼 받음(OC)

참고: 본 면접 후기의 모든 답변은 제가 면접 당시 실제로 대답한 내용이며, 다량의 그래픽스 '뇌피셜(야매 지식)'과 개인적인 이해가 포함되어 있어 정확성을 보장할 수 없으니 참고만 해주세요.

제 허접한 이력서를 첨부합니다:

1차 면접

Q: C++ 소스 코드에서 exe가 되기까지 어떤 과정을 거치나요?

컴파일하여 어셈블리 코드를 생성하고, 어셈블러가 기계어 코드를 생성하며, 링커가 각 모듈을 연결(link)합니다.

추가 질문: 컴파일 전에는 무엇을 하나요?

각종 매크로와 include를 처리합니다. 인용된 코드를 가져와 붙이고 매크로를 치환합니다.

Q: C와 C++의 차이는? C++이 더 빠른가요?

C++은 상속, 가상 함수 등의 메커니즘을 통해 다형성을 구현할 수 있습니다.

실행 속도는 C가 더 빠릅니다.

Q: STL의 vector에 계속 push를 하면 메모리상 어떤 변화가 있나요? 포인터로 vector 요소를 가리킬 때 주의할 점은?

임계치에 도달하면 메모리를 두 배로 확장합니다 (확장 배수는 컴파일러 버전에 따라 다름).

확장 후 데이터가 이동되어 포인터가 허공을 가리키는 야생 포인터(dangling pointer)가 될 수 있으므로 주의해야 합니다.

Q: C++의 가상 함수를 어떻게 이해하고 있나요? 순수 가상 함수란?

기반 클래스(Base class) 포인터를 통해 파생 클래스(Derived class)의 함수를 호출할 수 있게 해줍니다.

순수 가상 함수는 반드시 자식 클래스에서 구현해야 합니다.

Q: 왜 소멸자는 가상 함수일 수 있나요? 자식 클래스가 소멸자를 구현하지 않으면 어떻게 되나요?

자식 클래스가 소멸자에서 자원을 해제하도록 장려하기 위함입니다. 구현하지 않으면 부모 클래스의 소멸자가 호출되어, 자식 클래스의 자원이 해제되지 않아 메모리 누수가 발생할 수 있습니다.

Q: static 키워드의 용도와 효과에 대해 말해보세요.

변수 수식: 동일한 파일 내에서만 접근 가능한 정적 변수가 됩니다.

함수 수식: 클래스를 인스턴스화하지 않고도 해당 클래스의 static 함수를 호출할 수 있습니다.

Q: 프로세스와 스레드의 차이는? 스레드 동기화 방식에는 어떤 것들이 있나요? 스레드 하나에 스택은 몇 개? 락 없는(Lock-free) 스레드 동기화 방식은?

프로세스는 자원 할당의 최소 단위이고, 스레드는 프로세서 스케줄링의 최소 단위입니다.

스레드는 독립적인 호출 스택을 가집니다.

Lock-free 큐 (이건 당시 대답 못 함).

Q: [PBR]의 D, F, G 항에 대해 각각 설명해 볼까요? 프레넬 항은 어떤 시각적 효과를 주나요?

(여기서 대답을 잘 못했습니다. 면접관님은 물리적 의미를 물어보신 것 같은데 저는 공식 구성으로 대답했습니다. 이렇게 대답했어야 했습니다.)

D는 법선 부근의 반사광 강도 분포를 나타냅니다. 미세면(Microfacet) 벡터와 면 법선이 가까울수록 강도가 커집니다. 거칠기(Roughness)를 통해 로브(Lobe) 모양을 바꿉니다.

F는 프레넬 효과를 나타냅니다. 금속을 스치듯 볼 때(Grazing angle) 반사광이 많고, 정면에서 볼 때 반사광이 적은 현상입니다.

G는 스치듯 볼 때의 기하학적 차폐(Geometric Shadowing/Masking)를 나타내며, 스미스(Smith) 방법을 통해 입사와 출사 두 방향을 중첩합니다.

Q: PBR 텍스처 맵이 많은데 텍스처 슬롯이 부족하면 어떻게 처리하나요?

여러 속성을 하나의 채널에 합칩니다. 예를 들어 Roughness와 Metallic을 8비트 텍스처의 상위/하위 4비트에 나누어 저장할 수 있습니다. (역주: 보통 채널 패킹을 의미하는 듯)

추가 질문: 다른 방법은요?

버추얼 텍스처(Virtual Texture). 작은 텍스처들을 큰 텍스처로 합쳐서 필요할 때 로드합니다.

Q: PBR 텍스처 포맷에서 주의할 점은?

Albedo는 sRGB 포맷일 수 있지만, Roughness와 Metallic은 선형 공간(Linear Space)에 저장해야 합니다.

Q: GPU 렌더링 파이프라인의 과정은?

애플리케이션, 지오메트리 처리, 투영, 클리핑, 래스터화, 픽셀 셰이딩, 각종 테스트.

Q: FS(Fragment Shader), VS(Vertex Shader) 외에 어떤 셰이더가 있나요? 그들의 역할은? 코딩할 때 어떤 셰이더를 써봤나요?

지오메트리, 테셀레이션, 컴퓨트 셰이더.

Compute Shader로 클러스터 라이팅(Cluster Lighting)을 짤 때 써봤습니다. 각 클러스터에 GPU 스레드를 하나씩 할당해서 광원 컬링(Culling)을 수행했습니다.

Q: 디퍼드 렌더링(Deferred Rendering)의 장단점은? 모바일 구현 시 주의할 점은?

장점: 다중 광원 계산 시 패스(Pass) 하나만 쓰면 되고 씬 복잡도와 무관합니다.

단점: G-Buffer의 비디오 메모리 대역폭, MSAA 미지원, 투명 물체 처리가 어려움.

모바일에서는 여러 G-Buffer를 하나의 텍스처로 압축할 수 있습니다 (CryEngine의 MicroGBuffer 기술 참고).

추가 질문: 또 있나요?

(대답 못 함) 면접관님이 애플의 Metal에 모바일 G-Buffer 최적화 구현이 있다고 힌트를 주셨습니다. Render Target 크기를 Lossy compression으로 압축해 대역폭을 절약하는 방식입니다.

Q: 감마 보정에 대해 아나요? 언제 감마 공간으로 전환하나요?

모니터의 전압과 밝기 변환은 선형이 아니라 Gamma 2.2입니다.

선형 공간에서 조명과 색상을 계산하고, 출력할 때 Gamma 0.454를 적용해 모니터의 변환을 상쇄합니다.

Q: 버텍스 속성이 너무 많아 슬롯이 부족하면 어떡하나요?

(이것도 잘 대답 못 함) 정답은 큰 버퍼에 구조체를 저장하고 버텍스 속성에는 버퍼의 인덱스만 저장해서 사용하는 것입니다.

Q: 모델 면 수가 너무 많으면 어떻게 최적화하나요?

리메쉬(LOD), 버텍스 인덱스 사용.

(당시 생각 못한 것): 사실 절차적 생성(Procedural Generation)도 가능합니다. 지형 같은 경우 지형 메쉬를 저장하는 비용이 크니까요.

Q: VS 부하가 크면 어떡하나요? FS 부하가 크면요?

VS: 연속적인 행렬 곱셈을 피하고 CPU에서 미리 계산할 수 있습니다.

FS: 오버드로우(Overdraw) 현상이 심한지 확인합니다. 코드에 분기나 큰 루프가 있는지 확인합니다. 특정 기능을 해상도를 낮춰서 구현할 수 있는지 봅니다.

주: 여기 답변이 좀 별로였던 것 같습니다. VS 부하가 큰 건 멀리 있는 고폴리곤 기하체가 너무 많아서일 수도 있습니다. 픽셀 면적은 작지만 버텍스가 많은 경우죠.

Q: CSM(Cascaded Shadow Maps)을 아나요? CSM의 문제점은? 성능 최적화 방법은?

제 프로젝트에서 구현해 봤습니다. 여러 장의 뎁스 맵을 렌더링해서 구현합니다.

Draw Call 비용이 크고 비디오 메모리 대역폭 소모가 큽니다.

그림자 카메라에 프러스텀 컬링을 합니다. 혹은 CSM을 너무 멀리까지 켜지 않고, 먼 곳의 그림자는 SDF에 의존하거나 아예 그리지 않습니다.

Q: RayMarch와 RayTracing의 차이는? RayMarch 가속 전략은?

RayMarch는 정직하게 한 걸음씩 전진하며 경로상의 정보를 수집해야 하지만, RayTracing은 광선과 씬의 교차점만 신경 쓰고 전진 과정은 신경 쓰지 않습니다. 따라서 전진을 가속하는 전략을 쓸 수 있습니다.

일반적 전략: 해상도 낮추기 + 랜덤 스텝 길이 + Temporal.

Hi-Z: 뎁스 맵의 밉맵(Mipmap) 체인 위에서 스텝을 밟습니다.

추가 질문: 또 있나요?

SDF(Signed Distance Field).

Q: Git 사용해 봤나요? 200개의 커밋 중 버그를 어떻게 찾나요?

무식한 방법(Brute-force): 커밋 하나하나 실행해서 검사합니다.

이분법(Binary Search): 특정 커밋에서 버그가 발생했다면 그 이후 커밋은 다 문제 있는 거니까 검사할 필요 없습니다. 매번 절반씩 배제합니다.

Q: 학교에서는 Git과 협업을 접할 기회가 별로 없는데, Git 적응 능력은 어떻게 키우나요?

혼자 코드 짤 때도 새 기능 추가할 때마다 새 브랜치를 파고, 디버깅 후 문제없으면 merge 하는 식으로 합니다.

2차 면접

Q: 원신(Genshin Impact)의 각 렌더링 패스를 자세히 알고 있나요?

이건 좀 오픈된 질문인데, 인터넷 분석 글을 많이 안 봐서(아주 예전에 봤는데 까먹음) 대답을 잘 못했습니다. 대충 순서대로 몇 개 패스만 답했습니다.

그림자 -> 가까운 곳부터 먼 곳 순으로 불투명 물체 -> 먼 곳부터 가까운 곳 순으로 투명 물체 -> 포스트 프로세싱.

Q: 스크린 공간 반사(SSR)의 원리는? 스텝 과정을 최적화할 수 있나요? 모바일에서 거울 반사는 어떻게 구현하나요?

단일 바운스 레이 트레이싱입니다. 뎁스 맵을 이용해 샘플링 깊이와 테스트 깊이의 크기를 비교하여 광선과 씬의 교차를 판단합니다. 교차점의 색상을 반사 색상으로 반환합니다.

스텝 과정은 해상도 낮추기, Hi-Z, SDF 등의 전략으로 최적화할 수 있습니다.

모바일에서는 트레이싱 비용이 너무 크므로 리플렉션 프로브(정적 씬)를 사용하거나 카메라를 하나 더 둬서 RT에 렌더링하는 전략(예: 거울)을 씁니다.

Q: 아는 렌더링 경로(Rendering Path)는? 차이점은?

포워드(Forward), 디퍼드(Deferred).

포워드는 물체별로 조명을 계산하여 오버드로우가 있을 수 있습니다. 디퍼드는 화면 픽셀별로 계산하여 씬 복잡도와 비용이 무관합니다.

포워드는 물체마다 다른 조명을 쓸 수 있지만, 디퍼드는 물체 구분이 없어 모든 픽셀이 동일한 조명 세트를 씁니다.

포워드는 다중 광원 시 여러 번 덧그려야(여러 패스) 하지만, 디퍼드는 모든 광원을 한 번에 순회하여 하나의 패스에서 계산합니다.

Q: Deferred의 성능상 최대 단점? 최적화 방법은?

대역폭. G-Buffer 크기를 압축하여 최적화합니다.

여기서 지뢰 밟았습니다. 1차 면접관님이 Metal의 모바일 G-Buffer 최적화 방식을 언급하셨는데, 돌아가서 자세히 안 찾아봐서 또 대답 못했습니다.

Q: 아는 텍스처 압축 알고리즘은?

모릅니다 (또 지뢰 밟음).

주: 흔한 것으로 DXTC, ETC, ASTC 등이 있습니다.

Q: 포워드 렌더링은 어떻게 개선하나요? 구체적인 구현은?

Forward를 Forward+로 바꿉니다. 화면을 XY 방향으로 타일(Tile)로 나누고, 각 타일별로 광원 컬링을 수행해 현재 타일에 영향을 주는 광원만 남긴 뒤 조명을 계산합니다.

Q: Forward+와 Deferred 중 뭘 고르겠어요? 이유는?

오픈 질문이라 Forward+라고 답했습니다. 이런 건 이유만 충분하면 어느 쪽이든 상관없습니다.

이유: 다중 광원 씬 최적화가 명확하고, MSAA 지원하며, 투명 물체 그리기가 편합니다.

Q: 1차 면접에서 버추얼 텍스처 언급했는데, 더 깊게 알아봤나요? 말해보세요.

가상 메모리와 비슷하게 큰 텍스처(예: 지형 텍스처)를 조각조각 페이지(Page)로 나누어 필요할 때 로드하는 것입니다.

Q: Single Pass를 아나요?

모릅니다 (던짐).

이거 Unity VR 옵션 아닌가요? 보통 VR은 좌우 눈 두 번 렌더링하는데, Single Pass는 두 배 너비의 RT에 한 번에 렌더링하는 거였던 듯.

Q: 모바일과 PC GPU의 메모리, 아키텍처 차이는? 왜 모바일은 그런 솔루션을 쓰나요?

모바일은 메모리와 비디오 메모리를 구분하지 않지만 CPU와 GPU가 교차 접근(Cross access)할 수는 없습니다. 렌더링 측면에서는 Tile-based를 사용하여 한 번에 작은 화면 영역을 렌더링합니다. 각 타일의 데이터를 용량이 작고 저전력인 고속 메모리(Tile Memory/On-chip memory)에 순차적으로 불러와 래스터화, 쉐이딩 등을 계산합니다.

Q: GPU Driven으로 어떤 기능을 구현할 수 있나요? 구체적으로 어떻게?

오클루전 컬링(Occlusion Culling). 먼저 저해상도 뎁스 맵을 생성한 뒤, 물체의 Bounding Box와 뎁스 맵을 비교하여 가려지면 그리지 않습니다.

당시 답변할 때 명확히 말 못 했는데, 저해상도 뎁스 맵 확보는 주로 두 가지 파벌이 있습니다. 하나는 CPU에서 소프트 래스터화하는 것이고, 다른 하나는 이전 프레임의 뎁스 맵을 다시 읽어오는(Readback) 것입니다.

Q: Compute Shader 컬링 결과를 CPU로 다시 읽어와야 하나요? 바로 그릴 수 있나요?

바로 읽어오지 않고 GPU에서 그리기 명령을 실행할 수 있습니다.

DX12의 ExecuteIndirect 같은 일정 버전 이상의 그래픽 API 지원이 필요합니다.

Q: Compute Shader 사용 시 어떤 문제가 있나요? 주의할 점은?

특정 알고리즘 실행 시 CPU가 GPU로 대량의 데이터를 제출해야 해서 메모리-비디오 메모리 데이터 전송 비용이 발생합니다.

주: 답변이 별로였습니다. 면접관님은 스레드 동기화, 하드웨어 특성, Warp 성능 최적화 쪽을 묻고 싶으셨던 것 같습니다. GPU SIMD 특성상 Warp 내 모든 스레드가 같은 명령어를 실행하므로 분기 명령 처리가 어렵습니다. 보통 양쪽 분기를 다 실행하고 결과를 취하기 때문에 효율이 낮습니다.

Q: Compute Shader로 무슨 기능을 구현해 봤나요?

[Cluster Lighting]을 짰습니다. 각 클러스터에 스레드를 하나씩 할당해 광원 컬링을 했습니다.

Q: 아는 그래픽 API는? DX 써봤나요?

OpenGL, DX, [Metal], Vulkan.

OpenGL만 써봤고, 디퍼드 파이프라인과 레이 트레이싱을 직접 짜봤습니다.

Q: 개인 프로젝트에서 어떤 최적화를 했나요?

[Bloom] 가우시안 블러를 가로세로 두 패스로 나누고, Down sample + Up sample 시 하드웨어 Bilinear를 사용해 빠른 필터링을 했습니다.

볼류메트릭 클라우드는 해상도를 낮춰 트레이싱한 뒤 화면에 Up sample 했습니다.

Q: 해상도를 낮추면 무슨 문제가 생기죠? 어떻게 해결하나요?

볼류메트릭 클라우드에서 저해상도 RT를 바로 Up sample 하면 흐릿해지고, 깊이 변화가 큰 경계 부분에서 아티팩트(Artifact)가 생깁니다.

당시 해결법을 대답 못해서, 그냥 어차피 볼류메트릭 라이트나 구름은 흐릿하니까 유저가 눈치 못 채면 그만이라고 우겼습니다. (지뢰밭에서 탭댄스 춤)

주: 실제로는 RT의 깊이도 같이 저장했다가, Up sample 할 때 화면 깊이와 RT 깊이 차이가 너무 크면 버리는 식으로 해결해야 합니다. (역주: Bilateral upsampling 등을 의미)

Q: int는 몇 바이트? CPU 아키텍처마다 크기가 변하나요? Long 타입은요?

4바이트. 32비트에서 long도 4바이트지만 64비트에서는 long이 8바이트가 됩니다.

Q: 초대형 정수 데이터 구조는 어떻게 설계하나요? 덧셈 오버플로우 처리는?

Bitmap을 이용해 각 비트 정보를 저장합니다.

덧셈 오버플로우는 하드웨어 ALU처럼 상/하위 오버플로우를 처리하고 Overflow flag를 설정합니다.

추가 질문: 결과의 정확성을 보장하려면요?

Vector와 유사한 가변 길이 선형 컨테이너를 써서 Bitmap을 저장하고, 오버플로우 발생 시 Bitmap 자릿수를 적절히 늘립니다.

Q: 연결 리스트 뒤에서 k번째 수 찾기

투 포인터. p1이 먼저 k보 가고 그 뒤 p1, p2가 같이 갑니다. p1이 끝에 도달하면 p2가 가리키는 게 뒤에서 k번째 노드입니다.

Q: 파란 눈의 사람

이건 넌센스 퀴즈 같은 건데 당시 못 풀었습니다. 참고: 논리 문제: 파란 눈의 사람은 비행기를 타세요

3차 면접

질문이 꽤 오픈되어 있었고, 그래픽 렌더링 알고리즘에 대한 개인적 이해를 묻는 느낌이었습니다... 그리고 왜 대학원 안 가고 취업 선택했냐 같은 생활 관련 질문도 있었는데 생략할게요. 아래는 꽤 재밌었던 기술 질문들입니다.

Q: 읽어본 그래픽스 & 렌더링 관련 서적은?

주로 인터넷 블로그 위주로 봤습니다. 이론 쪽은 GAMES 101과 202를 봤고(다 못 봤는데 억지로 대답함), 그래픽 API는 Learn OpenGL 보면서 디퍼드 파이프라인 직접 짜보고 PBR 구현해 봤습니다. 레이 트레이싱은 코딩 쪽은 외국 사람이 Shadertoy 기반으로 쓴 Casual path tracing 봤고, Unity는 기본적으로 구글링이랑 문서 위주로 보고, 기능 필요하면 해당 API 검색하거나 GitHub에서 구현 방법 찾아봅니다.

주: 여기 답변 진짜 구렸습니다. 사실 RTR4, PBRT, RayTracing in one week 같은 자료 꽤 봤는데 말 못 함.

코딩 쪽은, Low discrepancy sequence 짤 때 블렌더 코드 훔쳤고, 환경 맵 중요성 샘플링 짤 때 어느 외국 대학 과제 가이드 훔쳤고, BRDF 짤 때 디즈니 논문 공식 훔쳤는데...

막상 닥치니까 너무 당황해서 머리가 안 돌아가서 말을 못 했습니다. 개 입에서 상아 안 나온다고, 면접관님한테는 제가 코드 도둑이고 훔칠 줄만 아는 사람으로 보였을 듯.

Q: 오픈 월드 게임의 날씨 변화, 예를 들어 비 오는 날 렌더링은 어떻게 처리해야 할까요?

약간 아트 쪽에 치우친 오픈 질문이라 대답을 잘 못했습니다. 참고만 하세요.

조명: 태양 평행광(씬 주광)이 약해지거나 사라지고, 씬 광원(예: 가로등) 조명에 의존합니다.

구름: 구름층이 두꺼워져야 하며, 샘플링 노이즈 맵 파라미터를 수정해 구현합니다.

식생: 식생의 흔들림 정도가 증가해야 합니다.

안개: 안개 농도 증가. Cluster Lighting 파이프라인이라면 Frustum Voxel 안에 광원 정보가 있으니 광원 볼류메트릭 포그도 가능합니다.

Q: Cluster Lighting 직접 구현해 봤다는데, 이 전략의 단점이나 문제점은 뭔가요?

CPU가 GPU로 대량의 데이터를 제출해야 해서 비용이 발생합니다.

이거 하나만 답했습니다. 당시 멘붕 와서. 보통 장점을 말하는데 갑자기 단점을 물어보니 반응을 못 했네요. 곰곰이 생각해보니 면접관님은 모바일 Compute Shader 호환성, Compute Buffer 데이터의 불연속적 접근(Random access)으로 인한 캐시 미스 비용, Warp 내 분기 불일치로 인한 비용 등을 묻고 싶으셨던 것 같습니다.

Q: 레이 트레이싱의 중요성 샘플링(Importance Sampling)을 어떻게 이해하나요?

좋은 강철은 칼날에 써야죠. 밝기 기여도가 큰 방향(예: 환경 맵의 밝은 곳, BRDF 값이 큰 방향)에 광선을 많이 할당해서, 적은 샘플링으로도 좋은 효과를 내는 것입니다.

Q: [HDR]을 아나요? HDR과 Bloom의 관계에 대해 말해보세요.

일반 픽셀 범위는 0~255지만, HDR은 물리 세계의 정확한 조명, 예를 들어 환경 맵의 밝기가 수만인 픽셀 등을 모사할 수 있습니다. HDR을 쓰면 물리적으로 정확한 색을 얻을 수 있지만 화면이 그렇게 밝게 표시를 못 하니 톤 매핑(Tone Mapping)을 거쳐 출력합니다.

HDR의 RT(Render Target)에 Bloom을 걸면, 아주 밝은 단일 픽셀 하나로도 넓은 범위의 빛 번짐(Halo)을 만들 수 있습니다. 예를 들어 <보더랜드 3>의 고휘도 안테나처럼요:

Q: Bloom 구현해 봤나요? 어떻게? 왜 Bloom 할 때 다단계 Mipmap을 샘플링하나요? 안 하면 어떻게 되나요?

두 가지 방법: 가로세로 두 번 가우시안 블러, 혹은 Down sample로 밉(Mip) 체인을 만들고 다시 Up sample 해서 화면에 합성.

단일 단계 Mip만 샘플링하면, 하드웨어 Bilinear 필터링이 2x2 박스라 최종 Bloom 결과가 깍두기 모양이 되어 아주 못생깁니다. 다단계 Mip 결과를 중첩하면 깍두기 느낌이 덜합니다.

주: 여기도 대답 잘 못함. 저해상도 Mip을 쓰는 또 다른 장점은 Bloom 확산 범위가 매우 커진다는 것입니다. 가우시안 블러로 전자와 같은 확산 범위를 내려면 필터 크기가 커져야 하고 비용도 높아집니다.

요약

저처럼 학력 평범하고 실력 허접한 사람이 대기업 면접 기회를 얻은 건 정말 운이 좋았습니다. 저를 도와주고 챙겨주신 HR 누님께도 감사드립니다. 아니었으면 제 쓰레기 같은 이력서는 진작 걸러졌을 거예요.

대기업 면접은 확실히 꼼꼼해서 많은 질문을 던지고 모르는 부분도 많이 찾아내 주셔서, 제 문제를 잘 드러내 줬습니다. 예를 들어 제가 렌더링은 쥐꼬리만큼 알지만 모바일과 성능 최적화는 거의 모르고, 상용 엔진 사용 경험도 부족하다는 점요. 대학원 입시하느라 시간을 너무 낭비했는데, 나중에 빡세게 보충해야겠습니다.