브라우저에서 진짜 하늘과 행성 대기를 렌더링하는 법
이 글은 파란 하늘, 노을, 행성 대기를 셰이더로 렌더링하는 과정을 단계별로 파고든다. Rayleigh 산란, Mie 산란, 오존 흡수, 깊이 버퍼, 행성 스케일 처리, LUT 기반 최적화까지 다뤄서 WebGL·React Three Fiber 쪽 개발자에게 꽤 실전적인 자료다.
- 1
하늘색은 단순 그라디언트가 아니라 공기 밀도, 파장별 산란, 시선 방향, 태양 방향이 합쳐진 결과임
- 2
Rayleigh 산란은 낮의 파란 하늘을, Mie 산란은 태양 주변의 뿌연 빛과 노을 느낌을, 오존 흡수는 수평선과 황혼의 색감을 보강함
- 3
행성 대기를 렌더링하려면 깊이 버퍼, 로그 깊이 버퍼, ray-sphere intersection으로 대기권 구간만 샘플링해야 함
- 4
실시간 성능을 위해 Transmittance LUT, Sky-view LUT, Aerial Perspective LUT로 비싼 계산을 텍스처 조회로 바꾸는 접근을 실험함
프론트엔드에서 3D 비주얼을 한다면 이 글은 그냥 예쁜 셰이더 튜토리얼이 아니라, 물리 기반 렌더링을 브라우저 제약 안에서 어떻게 타협하는지 보여주는 케이스임. 특히 ‘일단 raymarching으로 맞는 그림을 만들고, 그다음 LUT로 비용을 줄인다’는 흐름이 꽤 배울 만함.
관련 기사
개인 웹사이트에 JSON-LD 넣는 법, 검색엔진과 크롤러가 내 사이트를 제대로 읽게 만들기
개인 웹사이트에 JSON-LD 구조화 데이터를 추가해 검색엔진과 크롤러가 사이트, 사람, 글, 프로젝트를 더 정확히 이해하게 만드는 실전 가이드야. WebSite, Person, ProfilePage, BlogPosting 같은 노드를 어떻게 연결하고 어느 페이지에 넣어야 하는지 예시 중심으로 설명해.
Deno, 웹 프로젝트를 데스크톱 앱으로 묶는 `deno desktop` 공개
Deno가 TypeScript 파일 하나부터 Next.js 앱까지 데스크톱 앱으로 패키징하는 `deno desktop`을 공개했다. 아직 안정 릴리스는 아니고 Deno v2.9.0 canary에서만 쓸 수 있지만, 운영체제 WebView 기반의 작은 바이너리, 프레임워크 자동 감지, 내장 자동 업데이트까지 한 번에 노린다.
파비콘 안에 웹사이트를 숨겨 넣은 개발자, 진짜 됨
한 개발자가 웹사이트의 파비콘 이미지를 작은 저장소처럼 사용해 HTML을 픽셀 RGB 값 안에 넣고, 브라우저에서 다시 읽어 렌더링하는 실험을 했다. 208바이트짜리 HTML payload에 4바이트 길이 헤더를 붙여 총 212바이트를 만들었고, 이를 9x9 픽셀 PNG 안에 87% 사용률로 저장했다.
스크린이 절대 못 보여주는 색은 어디에 있을까
이 글은 우리가 화면에서 보는 색이 인간이 볼 수 있는 색 전체가 아니라, sRGB와 Display-P3 같은 색역 안에 갇힌 일부라는 점을 파고든다. 특히 숲, 바닷속, 새와 나비의 구조색, 생물발광, 교통신호 LED 같은 실제 세계에는 모니터와 카메라가 제대로 담지 못하는 청록색과 녹색 계열이 꽤 많다는 얘기다. 디스플레이, 카메라, 조명, 렌더링을 다루는 개발자라면 “색상값 하나”가 생각보다 물리와 표준의 타협이라는 걸 체감하게 된다.
크롬, 매니페스트 버전 2 우회로까지 닫는다
구글 크롬이 매니페스트 버전 2 확장 지원을 사실상 최종 종료 단계로 밀어넣고 있다. 기존에는 플래그나 레지스트리 설정으로 유블록 오리진 같은 확장을 살리는 우회가 있었지만, 크로미움 150과 151을 거치며 그 우회 코드까지 제거되는 흐름이다.
댓글
댓글
댓글을 불러오는 중...