3D
새 deki-3d 패키지는 2D와 같은 프레임에, 같은 정렬 순서로 메시를 그립니다. 그래서 UI를 다른 화면처럼 3D 씬 위에도 올릴 수 있습니다.
- 보드에서는 소프트웨어 래스터라이저입니다. 타일 단위로 그리므로 깊이 버퍼는 타일 하나면 됩니다. 32픽셀이면 2 KB로, 320x240 전체에 필요한 150 KB가 아닙니다.
- T-Deck에서 삼각형 2,000개의 텍스처 회랑: 초당 20프레임.
- 삼각형 82,000개의 Sponza도 T-Deck에서 초당 1.3프레임으로 돌아갑니다.
- Miyoo Mini에서는 삼각형 6,000개의 씬이 60프레임을 유지합니다.
- 데스크톱에서는 OpenGL로 그리며, 그림자와 셰이더를 쓸 수 있습니다.
- 모델은
.obj파일에서 크기 제한 없이 불러옵니다. 각 플랫폼의 빌드가 남길 삼각형 비율(디테일)을 정할 수 있고, 텍스처는 그 플랫폼용 이미지 설정을 따릅니다. 모델이 보드 메모리에 들어가지 않으면 보드 빌드가 멈춥니다. - 카메라는 투영이 원근일 때 메시를 그립니다.
deki-3d는 실험적입니다. 속성과 파일 형식은 아직 바뀔 수 있습니다.
라이트
Light 컴포넌트 하나가 메시와 2D 세계를 함께 비춥니다. 종류는 주변광, 디렉셔널, 포인트, 스포트이며, 색상과 세기를 가집니다.
- 보드의 2D는 CPU로 비추므로 T-Deck에서도 빛 웅덩이와 밤 장면을 만들 수 있습니다. 단계를 2~8로 하면 디더가 들어간 뚜렷한 고리가 되어 픽셀 아트다운 모습이 됩니다.
- 데스크톱의 2D는 GPU가 픽셀마다 비춥니다.
- 카메라의 비출 정렬 순서 상한으로 UI를 빛 밖에 둘 수 있습니다.
- GPU 그림자: 한 프레임에 디렉셔널이나 스포트 라이트 두 개까지 그림자를 드리웁니다. OpenGL이 없는 보드는 그림자 없이 라이트를 그리고, 빌드가 어떤 라이트인지 알려 줍니다.
- Light가 없는 게임은 라이트에 메모리를 쓰지 않습니다.
셰이더와 GPU
- HLSL 셰이더. 메시에 붙인
.shader로 색상을 정하고(Shade()), 풀이나 물처럼 버텍스를 움직일 수도 있습니다(Displace()). 화면 효과는 프레임 전체에 셰이더를 적용합니다. - 데스크톱에서는 2D도 GPU로: 스프라이트, 텍스트, 도형이 프레임에 바로 그려집니다.
- 플랫폼별 텍스처 필터: 이미지마다 포인트, 바이리니어, 트라이리니어를 고를 수 있습니다. GPU가 없는 보드는 포인트로 그리고, 인스펙터가 그렇다고 알려 줍니다.
Miyoo Mini
새 deki-miyoo-boards 패키지는 Miyoo Mini용 게임을 빌드하고 SD 카드에 설치합니다. 순정 펌웨어와 Onion 모두 됩니다.
- 320x240 ARGB8888을 패널에 2배로 표시합니다.
- 삼각형 6,000개의 3D 씬은 초당 60프레임, 13,000개의 씬은 안정적으로 30프레임.
- MENU로 게임을 끝냅니다.
Onion에서 확인했습니다. 순정 펌웨어는 아직 확인하지 않았고, 사운드, 배터리, 밝기는 이 버전에 없습니다.
그 밖의 새 기능
- 프로젝트 이름 바꾸기: Project Settings > Project > Name에서 바꿉니다.
- 빌드 오류가 무엇이 실패했는지 알려 줍니다: 패키지, 프로젝트 코드, 엔진 중 어디인지.
- 데스크톱 타깃의 이름이 Desktop이 되었습니다. Windows, Linux, macOS용으로 게임의 PC 버전을 빌드합니다.
- Tactility: 사운드, 그리고 USB나 Wi-Fi로 설치. 실험적입니다. 빌드는 되지만 아직 기기에서 돌아가는 것은 확인하지 않았습니다.
- 프로그램으로 실행되는 게임은 엔진 자체의
main()에서 시작합니다. 데스크톱과 Miyoo Mini 모두 같고, 끝날 때 메모리를 모두 해제합니다.
업데이트
0.22로 만든 프로젝트를 열면 먼저 업그레이드할지 묻습니다. 업그레이드는 프로젝트 자체 파일에 있는 desktop-os를 hosted로, SIMULATOR를 DEKI_HOSTED로 이름을 바꿉니다. 씬과 에셋은 건드리지 않으며, 모든 변경 사항은 버전 관리에서 볼 수 있습니다. 취소하면 프로젝트는 그대로입니다.
패키지는 그대로도 동작합니다. 업데이트하려면 패키지 관리자나 DekiEditor --packages-update all <project>를 쓰세요.
패키지 작성자용: 0.22로 빌드한 패키지는 다시 빌드됩니다(리플렉션 ABI 23).
Sponza: Frank Meinl(Crytek), Marko Dabrovic의 원작을 바탕으로 함. Morgan McGuire의 Computer Graphics Archive에서 (CC BY 3.0).
