JH LIM LAB NOTES
Lab Note 065
SIMULATION / SEMICONDUCTOR10 JUL 2026

Rewriting the SEM Engine as a Rasterizer

StatusSHIPPED

Where it started

6월 24일에 틸트 3D 공유 엔진을 만들었다. 여러 렌더러가 각자 그리던 걸 한 엔진으로 모으고 구조 불변식을 걸었다. 그걸로 충분할 줄 알았다. 아니었다.

The hack pile

문제는 가림이었다. 앞에 있는 구조가 뒤를 가려야 하는데, 도형을 순서대로 그리는 방식에서는 그게 자동으로 안 된다. 무엇을 먼저 그릴지 매번 정해줘야 한다. 각도가 하나면 손으로 정할 수 있다. 자유 오빗이 되면 못 한다. 각도마다 순서가 달라지기 때문이다. 그래서 "이 경우엔 이걸 빼라"는 예외가 계속 쌓였다.

v2 — two steps in one day

7월 10일에 두 단계로 다시 썼다. 2단계 — 씬을 삼각형 메시로 바꿨다. 박스는 12삼각형 고정, 곡면은 적응 분할, 윗면에 홀이 뚫린 경우까지. 3단계 — 삼각형을 z-buffer 로 래스터화하고 SEM 셰이딩을 얹었다. 가림이 자동으로 풀렸다. 각 픽셀이 자기 앞에 뭐가 있는지 스스로 안다. 쌓아둔 컬링 해킹이 통째로 사라졌다.

예외가 계속 쌓이면 고칠 게 아니라 바꿀 때다.

The part I got wrong for weeks

엔진을 새로 쓴 게 그림을 다 고쳐주지는 않았다. 8월에 트렌치 렌더를 여덟 번 넘게 손봤다. 가짜 가로선, 안개처럼 낀 회색 페이드, 바닥의 마하 밴드, 입구의 가짜 이음매. 전부 SEM 사진에는 없는데 내 그림에는 있던 것들이다. 원인은 매번 같았다 — 없는 경계를 그리고 있었다. 빈 공간과 물질 사이에 선을 넣으면 사람 눈에는 그럴듯한데, 실제 SEM 에서 그 자리는 그냥 어둡다.

Roughness came later

식각 바닥 거칠기를 그래디드 조건과 쿠폰에까지 넣은 건 8월 18일이다. 같은 커밋에서 낡은 충실도 선언을 철회했다 — "⚪ 표시는 실행되는 프로브를 갖는다", 즉 검증되지 않은 항목에 표시만 해두는 걸 그만뒀다. 거칠기가 α-step 측정값과 SEM 이미지, 광학 소견에 각각 어떻게 나타나는지를 맞추는 게 남은 일이었다.

측정 장비 세 대가 같은 이야기를 해야 학생이 믿는다.
Related project
SemiFab AI
Virtual semiconductor process lab — theory, system, simulator
Technical