| 기준 치수 | 핵심 라이브러리 | 설명하다 |
|---|---|---|
runtime | - | 핵심 모듈 |
runtime/cgpu | - | 핵심 서브 모듈, 최신 GPU 플랫폼을위한 크로스 플랫폼 그래픽 API |
runtime/sugoi | - | Core Submodule, 진정한 데이터 중심 프로그래밍 ECS 객체 모델 |
runtime/math | RealTimeMath | 핵심 하위 모듈, 수학 라이브러리 |
runtime/io | - | 핵심 서브 모듈, 동기/비동기 I/O 서비스 |
runtime/task | fibertaskinglib, marl | 코어 하위 모듈, 코 루틴을 기반으로 한 컴퓨팅 집약적 인 작업 시스템 |
runtime/binary | - | 핵심 하위 모듈, 이진 직렬화 |
runtime/platform | - | 핵심 하위 모듈, 시스템 인터페이스 |
runtime/resource | - | 핵심 하위 모듈, 비동기 자원 관리 |
runtime/type | - | RTTI 관련 기능 제공 코어 하위 모듈 |
runtime/lua | 루아, 루아 | LUA를 접착제 언어로 사용하는 핵심 하위 모듈 |
SkrScene | - | 장면 모듈, 장면 리소스 관리 |
SkrRenderer | - | 렌더러 모듈, 렌더링 리소스 관리, 드라이브 렌더링 파이프 라인 |
SkrImgui | Imgui | 디버깅을위한 런타임 UI |
SkrRenderGraph | - | CGPU를 기반으로 그래프 렌더링 |
SkrLive2d | Live2d | Live2d 렌더링 백엔드 |
SkrInputSystem | gaininput | 상단 입력 패키지 |
SkrAnim | Ozz-Animation | 애니메이션 리소스 관리, 애니메이션 컴퓨팅의 기본 기능 |
devtime/tweak | - | 가벼운 일정한 열 교체 솔루션을 제공합니다 |
devtime/inspect | - | 런타임 변수 상태 시각화를 제공합니다 |
SkrToolCore | - | 리소스 베이킹 프로세스를 관리하고 추진합니다 |
SkrAnimTool | Ozz-Animation | 애니메이션 관련 리소스 가져 오기 및 굽습니다 |
SkrGLTFTool | CGLTF | GLTF 모델을 가져 와서 굽습니다 |
SkrTextureCompiler | ISPCTEXTURECOMPRESSOR | 맵을 가져오고 굽습니다 |
SkrShaderCompiler | - | 자재 관련 자원을 가져오고 굽습니다 |
codegen | libtooling, mako-template | 코드 생성을 제공하십시오 |
| 플랫폼 | CI (Dev) |
|---|---|
| 플랫폼 | D3d12 | D3d11 | vulkan | 금속 |
|---|---|---|---|---|
| 창 | ✔️ | ✔️ | N/A | |
| 마코스 | N/A | N/A | ✔️ | ❗ |
| 플랫폼 | PNG | JPEG | BMP | ICO | exr | TGA |
|---|---|---|---|---|---|---|
| 창 | libpng (v1.5.2) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
| 마코스 | libpng (v1.5.27) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
ECS 기반 멀티 플레이어 게임 및 서버.
StateBuffer를 사용한 차세대 CGPU 그래픽 인터페이스. PSO의 개념을 포기하고 StateBuffer를 그래픽 파이프 라인의 상태 설명으로 사용하십시오. 전통적인 그래픽 파이프 라인 API는 종종 모든 파이프 라인 상태와 셰이더 ISA를 포장하고 전체적으로 GPU에 업로드하는 PSO를 사용합니다.
StateBuffer는 일련의 stateChunks로 구성되며 각 StateChunk는 그래픽 파이프 라인 상태를 설명하며 StateBuffer는 StateChunk의 조합을 통해 그래픽 파이프 라인의 전체 상태를 설명합니다. StateBuffer는 PSO의 전체 플러시와 비교하여 드로잉 사이트에서 스테이트 패킷을 준비하고 DrawCall이 생성 될 때 State Switch를 GPU의 상태 레지스터 그룹으로 밀 수 있습니다.
StateBuffer는 파이프 라인 및 셰이더 조합의 폭발로 인한 메모리 팽창 문제를 크게 완화 할 수 있으며 PSO는 대신이 문제를 악화시킵니다.
wip ...
GUI의 RenderTree 레이어에는 타이포그래피 및 렌더링 객체 렌더링 기능이 있습니다. 기본 프리미티브, 텍스처, 컬러 브러시 및 텍스트 단락을 지원합니다.
Cubism Native SDK를 통합하고 Live2D 모델의 효율적인 도면을 위해 렌더 그래프를 사용하는 프로그램의 예.
Live2D 모델은 여러 소스 데이터 유형을 결합하며 모든 데이터 유형이로드되고 구문 분석됩니다. 전체 모델 로딩 프로세스는 하드 디스크 판독, 메모리 스트리밍으로 비디오 메모리로의 메모리 스트리밍, 비디오 메모리로의 파일 감압 스트리밍 및 파일을 비디오 메모리에 직접 업로드합니다. 데모는 모든 유형의 I/O 작업이 대역폭 효율적으로 유지되도록하며, 그 동안 요청을 시작하는 기본 스레드에는 일시 정지 또는 오버 헤드가 없습니다. 처리되지 않은 Live2D 모델에는 수십 개의 중소 규모의 JSON 파일, 여러 개의 중간 크기 모델 정점 파일 및 디코딩 해야하는 2 개의 4K PNG 맵이 포함되어있어 아래 그림에서 I/O 파이프 라인 프로파일 차트를 구성합니다.
배송 빌드의 최종 렌더링 프레임 카운트는 수천 프레임을 쉽게 파괴 할 수 있으며, 이는 공식 입체파 예 벤치 마크의 10 배 이상입니다.
이 데모는 연기 렌더링에 RenderGraph를 사용하는 방법을 보여줍니다. 여기서 조명 계산 부분은 Computeshdaer와 Pixelshader의 두 가지 구현입니다. 실제 조명 음영 효과는 데모에서 완료되지 않았으며, 지연 프로세스의 타당성을 확인하는 데 중점을 둡니다. 이 데모는 또한 사용자 정의 프로파일 러를 사용하여 RenderGraph의 실행 세부 사항을 프로파일하는 방법을 보여줍니다.
이 데모는 삼각형 렌더링에 RenderGraph를 사용하는 방법을 보여줍니다.
이 데모는 CGPU에서 텍스처 샘플링을 사용하는 방법을 보여주고 Demo는 CGPU에서 정적/불변 샘플러를 활성화하는 방법을 보여줍니다.
우리는 우리가 탐구 한 결과를 포기하게되었습니다. 포기한다는 것은 이러한 기술이 열악하거나 사용할 수 없다는 것을 의미하지는 않지만 포괄적 인 고려 후 선택적으로 포기했습니다.
이것은 멀티 백드 트라이앵글 드로잉 데모입니다.
다음 명령으로 컴파일하십시오
> xmake l setup.lua
> xmake f -m debug -c
> xmake
팁 :
.xmake 발생하거나 불완전한 문제가 /build 수 있습니다. 더 이상 문제가있는 경우 문제를보고하십시오.xmake f -m debug -c -v 의 상세한 출력을 제공하십시오.xrepo remove --all -y 사용하여 잘못 설치된 저장소를 청소 한 다음 재 구축 할 수 있습니다. vscode + clangd를 편집 환경으로 사용하고 명령 xmake project -k compile_commands 사용하여 clangd가 요구하는 데이터 세트를 생성하는 것이 좋습니다.