diff --git a/README.md b/README.md index 193e935..e09de96 100644 --- a/README.md +++ b/README.md @@ -8,219 +8,9 @@ # [@GraphicalPlayground](https://github.com/GraphicalPlayground)/gp-engine 🌎 Read this in: [English](README.md) | [Español](translations/es/README.md) | [Français](translations/fr/README.md) | [简体中文](translations/zh-cn/README.md) - + -**Table of content** -[Overview](#overview) -┕ [Getting Started](#getting-started) -┕ [Prerequisites](#prerequisites) -┕ [Building the Engine](#building-the-engine) -┕ [Gallery](#gallery) -[Architecture](#architecture) -┕ [Core Systems](#core-systems) -┕ [Progressive Abstractions](#progressive-abstractions) -┕ [Rendering Pipelines (OpenGL / Vulkan / DirectX / ...)](#rendering-pipelines-opengl--vulkan--directx--) -[Usage & Experimentation](#usage--experimentation) -┕ [Sample Projects](#sample-projects) -┕ [Shader Programming](#shader-programming) -[Documentation](#documentation) -┕ [API Reference](#api-reference) -┕ [Learning Paths](#learning-paths) -[Contributing](#contributing) -┕ [Code of Conduct](#code-of-conduct) -┕ [Security](#security) -┕ [License](#license) -┕ [Donations](#donations) -[Contact](#contact) - -## Overview - -**gp-engine** is a C++ graphics engine specifically engineered for learning, experimentation, and -teaching modern rendering architectures. - -Built around a **Deconstructionist Pedagogy**, the engine bridges the gap between high-level creative -tools and low-level hardware programming. Rather than hiding complexity behind a black-box system, -`gp-engine` provides progressive abstractions over modern rendering APIs (OpenGL and Vulkan). It -empowers users to tear down, study, modify, and cleanly reimplement core graphics concepts, from -foundational rendering algorithms to advanced GPU architectures, without needing to master millions -of lines of legacy code. - -### Getting Started - -Welcome to the Graphical Playground ecosystem. To start experimenting with `gp-engine`, you will need -to clone the repository and set up the build environment. The engine is built using a modern C++23 -toolchain and relies on a modular, production-grade architecture. - -First, clone the repository along with its submodules: - -```bash -git clone --recursive https://github.com/GraphicalPlayground/gp-engine.git -cd gp-engine -``` - -### Prerequisites - -Because `gp-engine` takes advantage of modern graphics APIs and the latest C++ features, ensure -your development environment meets the following requirements: - -- **Compiler**: A C++23 compatible compiler (GCC 13+, Clang 16+, or MSVC 19.38+) -- **Build System**: CMake (Version 3.20 or higher) -- **Graphics Drivers**: Up-to-date GPU drivers with support for: - - Vulkan `tba` - - OpenGL `tba` - - DirectX `tba` (Windows only) - - Metal `tba` (macOS only) - -### Building the Engine - -The engine uses CMake Presets to simplify configuration and building across different platforms and -environments. We recommend performing an out-of-source build, which the presets handle automatically -to keep your project directory clean. - -> **Important Prerequisites**: Our Linux presets specifically require the Clang compiler -(`clang` and `clang++`) as well as `ccache` (compiler cache) to be installed on your system prior to -building. For Windows, `clang-cl` is required, and for macOS, the default `clang` compiler is sufficient. - -**1. List available presets:** - -First, check the available configure presets for your specific platform (Linux, Windows, or macOS): - -```bash -cmake --list-presets -``` - -_Example output:_ - -```text -Available configure presets: - - "linux-release" - "linux-debug" - "linux-profile" - "linux-development" -``` - -> (Note: You will see `windows-...` or `macos-...` prefixes depending on your operating system). - -For detailed information on what each configuration entails, please refer to the -[Build Type documentation](https://docs.graphical-playground.com/docs/gp-engine/Programming%20With%20C++/GP%20Build%20Tool/Build%20Type). - -**2. Configure the project:** - -Select the appropriate preset for your environment and generate the build files. For example, to -configure a release build on Linux: - -```bash -cmake --preset linux-development -``` - -> Note: You can still append flags like `-DGP_USE_VULKAN=ON` or `-DGP_USE_OPENGL=ON` to your preset - command depending on the rendering backend you wish to target. Read the [documentation](#documentation) - for more details on configuring rendering backends. - -**3. Compile the project:** - -Build the engine using the corresponding build preset. You can also append the `-j` flag to utilize -multiple CPU cores and speed up the process: - -```bash -cmake --build --preset linux-development -j$(nproc) -``` - -Once the build successfully completes, the compiled binaries and sample experimentation projects -will be located in the `binaries/bin/` directory. You can run one of the basic sample executables -to verify that the rendering pipeline and windowing context have initialized correctly. - -### Gallery - -_Screenshots and clips of `gp-engine` in action are coming soon. In the meantime, check the -[Learning Paths](https://graphical-playground.com/discover) for a preview of what you'll be building._ - -## Architecture - -`gp-engine` is organized as a set of independent, composable systems rather than a single monolithic -runtime. Each system is designed to be studied and swapped out in isolation, in keeping with the -project's Deconstructionist Pedagogy. The engine targets Windows, Linux, macOS, iOS, Android, and -WASM, and is built under strict portability constraints: no RTTI, no exceptions, and correctness -across both endianness and architecture (x86_64 and ARM64). - -### Core Systems - -The engine's foundation is a collection of hand-built, dependency-light core systems: - -- **Math Library**: A high-performance, SIMD-optimized math library for vectors, matrices, and - quaternions. -- **Memory Management**: A custom memory allocator and pool system designed for low-latency - graphics workloads. -- **Foundational Containers**: Lightweight, cache-friendly data structures for graphics programming. -- **Cryptography & Hashing**: A set of cryptographic primitives and hashing functions for secure - resource management. -- **Error & Diagnostics**: A robust error handling and logging system for debugging and profiling. -- **Concepts & Type Traits**: A collection of C++ concepts and type traits to enforce compile-time - correctness and improve code clarity. - -### Progressive Abstractions - -Rather than exposing a single fixed API, `gp-engine` layers its abstractions so learners can enter at -the level that matches their experience and descend further as they're ready: - -1. **Foundations**: core algorithms and data structures with no rendering API in sight. -2. **Abstracted Rendering**: a simplified, engine-level API for getting pixels on screen quickly. -3. **Native APIs**: direct access to OpenGL and Vulkan calls for learners who want to work as close -to the hardware as possible. - -Each layer is documented so you can trace exactly how a call at the top eventually reaches the GPU. - -### Rendering Pipelines (OpenGL / Vulkan / DirectX / ...) - -`gp-engine` currently ships with DirectX and Vulkan rendering backends, selectable at configure time -via CMake flags (see [Building the Engine](#building-the-engine)). OpenGL (Linux/macOS) and Metal -(macOS) backends are planned to round out native support on every target platform. Each backend -implements the same engine-facing abstraction, so sample projects and learning material remain -portable across APIs. - -## Usage & Experimentation - -Once built, `gp-engine` is meant to be explored hands-on: run the sample projects, read through the -corresponding source, then modify or reimplement pieces yourself. - -### Sample Projects - -The `samples/` directory is organized to mirror the Learning Paths, starting with minimal -"hello triangle"-style projects and building up toward full rendering pipelines. Check the directory -itself for the current list of runnable samples, and see the -[Learning Paths](https://graphical-playground.com/discover) for the recommended order to work -through them. - -## Documentation - -Comprehensive documentation for `gp-engine` is hosted on our main documentation portal. Whether you -are building your first triangle or writing a custom Vulkan rendering pass, our guides are designed -to support your experimentation. - -- [**Main Documentation Portal**](https://docs.graphical-playground.com) -- [**Engine Introduction**](https://docs.graphical-playground.com/docs/engine/intro) - -### API Reference - -Our detailed C++ API documentation outlines the core classes, rendering pipelines, and math -libraries that make up `gp-engine`. If you are extending the engine or modifying its core -components, please review our C++ guides and formatting rules to ensure your code aligns -with the project's architecture. - -- [**C++ API Reference**](https://docs.graphical-playground.com/docs/engine/cpp-api-reference) -- [**C++ Programming Guide**](https://docs.graphical-playground.com/docs/engine/programming-with-cpp) -- [**C++ Coding Standard**](https://docs.graphical-playground.com/docs/engine/programming-with-cpp/coding-standard) - -### Learning Paths - -Graphical Playground is built around a Deconstructionist Pedagogy, we want you to tear the engine -apart and learn how it works. To help guide your studies, we have curated structured learning -paths that take you from foundational graphics programming concepts to advanced engine architecture. - -- [**Explore the Learning Paths**](https://graphical-playground.com/discover) - - + ## Contributing We welcome contributions from everybody! Whether you are fixing a bug, implementing a new features, diff --git a/translations/es/README.md b/translations/es/README.md index 2944fe3..68b3e24 100644 --- a/translations/es/README.md +++ b/translations/es/README.md @@ -8,164 +8,9 @@ # [@GraphicalPlayground](https://github.com/GraphicalPlayground)/gp-engine 🌎 Leer en: [English](../../README.md) | [Español](../es/README.md) | [Français](../fr/README.md) | [简体中文](../zh-cn/README.md) - + -**Tabla de contenido** -[Descripción](#descripción) -┕ [Primeros Pasos](#primeros-pasos) -┕ [Prerrequisitos](#prerrequisitos) -┕ [Compilar el Motor](#compilar-el-motor) -┕ [Galería](#galería) -[Arquitectura](#arquitectura) -┕ [Sistemas Principales](#sistemas-principales) -┕ [Abstracciones Progresivas](#abstracciones-progresivas) -┕ [Pipelines de Renderizado (OpenGL / Vulkan / DirectX / ...)](#pipelines-de-renderizado-opengl--vulkan--directx--) -[Uso y Experimentación](#uso-y-experimentación) -┕ [Proyectos de Ejemplo](#proyectos-de-ejemplo) -┕ [Programación de Shaders](#programación-de-shaders) -[Documentación](#documentación) -┕ [Referencia de API](#referencia-de-api) -┕ [Rutas de Aprendizaje](#rutas-de-aprendizaje) -[Contribuir](#contribuir) -┕ [Código de Conducta](#código-de-conducta) -┕ [Seguridad](#seguridad) -┕ [Licencia](#licencia) -┕ [Donaciones](#donaciones) -[Contacto](#contacto) - -## Descripción - -**gp-engine** es un motor de gráficos en C++ específicamente diseñado para el aprendizaje, la experimentación y la enseñanza de arquitecturas de renderizado modernas. - -Construido alrededor de una **Pedagogía Deconstructivista**, el motor tiende un puente entre las herramientas creativas de alto nivel y la programación de hardware de bajo nivel. En lugar de ocultar la complejidad detrás de un sistema de caja negra, `gp-engine` proporciona abstracciones progresivas sobre las APIs de renderizado modernas (OpenGL y Vulkan). Permite a los usuarios desmontar, estudiar, modificar y reimplementar limpiamente los conceptos gráficos fundamentales, desde algoritmos de renderizado básicos hasta arquitecturas avanzadas de GPU, sin necesidad de dominar millones de líneas de código heredado. - -### Primeros Pasos - -Bienvenido al ecosistema Graphical Playground. Para comenzar a experimentar con `gp-engine`, necesitarás clonar el repositorio y configurar el entorno de compilación. El motor está construido con una cadena de herramientas moderna C++23 y se basa en una arquitectura modular de grado de producción. - -Primero, clona el repositorio junto con sus submódulos: - -```bash -git clone --recursive https://github.com/GraphicalPlayground/gp-engine.git -cd gp-engine -``` - -### Prerrequisitos - -Dado que `gp-engine` aprovecha las APIs gráficas modernas y las últimas características de C++, asegúrate de que tu entorno de desarrollo cumpla con los siguientes requisitos: - -- **Compilador**: Un compilador compatible con C++23 (GCC 13+, Clang 16+, o MSVC 19.38+) -- **Sistema de Compilación**: CMake (Versión 3.20 o superior) -- **Controladores Gráficos**: Controladores GPU actualizados con soporte para: - - Vulkan `tba` - - OpenGL `tba` - - DirectX `tba` (solo Windows) - - Metal `tba` (solo macOS) - -### Compilar el Motor - -El motor utiliza CMake Presets para simplificar la configuración y compilación en diferentes plataformas y entornos. Recomendamos realizar una compilación fuera del árbol de fuentes, que los presets manejan automáticamente para mantener limpio el directorio de tu proyecto. - -**Prerrequisitos importantes para Linux**: Nuestros presets de Linux requieren específicamente el compilador Clang (`clang` y `clang++`) así como `ccache` (caché del compilador) instalados en tu sistema antes de compilar. - -**1. Listar los presets disponibles:** - -Primero, comprueba los presets de configuración disponibles para tu plataforma específica (Linux, Windows o macOS): - -```bash -cmake --list-presets -``` - -_Ejemplo de salida:_ - -```text -Available configure presets: - - "linux-release" - "linux-debug" - "linux-profile" - "linux-development" -``` - -> (Nota: Verás prefijos `windows-...` o `macos-...` según tu sistema operativo). - -Para información detallada sobre lo que implica cada configuración, consulta la -[documentación sobre Tipos de Compilación](https://docs.graphical-playground.com/docs/gp-engine/Programming%20With%20C++/GP%20Build%20Tool/Build%20Type). - -**2. Configurar el proyecto:** - -Selecciona el preset adecuado para tu entorno y genera los archivos de compilación. Por ejemplo, para configurar una compilación de desarrollo en Linux: - -```bash -cmake --preset linux-development -``` - -> Nota: Puedes añadir flags como `-DGP_USE_VULKAN=ON` o `-DGP_USE_OPENGL=ON` a tu comando de preset según el backend de renderizado que desees usar. Lee la [documentación](#documentación) para más detalles sobre la configuración de backends de renderizado. - -**3. Compilar el proyecto:** - -Compila el motor usando el preset de compilación correspondiente. También puedes añadir el flag `-j` para utilizar múltiples núcleos de CPU y acelerar el proceso: - -```bash -cmake --build --preset linux-development -j$(nproc) -``` - -Una vez que la compilación se complete con éxito, los binarios compilados y los proyectos de ejemplo estarán ubicados en el directorio `binaries/bin/`. Puedes ejecutar uno de los ejecutables de ejemplo básicos para verificar que el pipeline de renderizado y el contexto de ventana se hayan inicializado correctamente. - -### Galería - -_en progreso..._ - -## Arquitectura - -_en progreso..._ - -### Sistemas Principales - -_en progreso..._ - -### Abstracciones Progresivas - -_en progreso..._ - -### Pipelines de Renderizado (OpenGL / Vulkan / DirectX / ...) - -_en progreso..._ - -## Uso y Experimentación - -_en progreso..._ - -### Proyectos de Ejemplo - -_en progreso..._ - -### Programación de Shaders - -_en progreso..._ - -## Documentación - -La documentación completa de `gp-engine` está alojada en nuestro portal de documentación principal. Ya sea que estés dibujando tu primer triángulo o escribiendo un renderizado Vulkan personalizado, nuestras guías están diseñadas para apoyar tu experimentación. - -- [**Portal de Documentación Principal**](https://docs.graphical-playground.com) -- [**Introducción al Motor**](https://docs.graphical-playground.com/docs/engine/intro) - -### Referencia de API - -Nuestra detallada documentación de la API de C++ describe las clases principales, los pipelines de renderizado y las bibliotecas matemáticas que componen `gp-engine`. Si estás extendiendo el motor o modificando sus componentes principales, revisa nuestras guías de C++ y las normas de formato para garantizar que tu código se alinee con la arquitectura del proyecto. - -- [**Referencia de la API de C++**](https://docs.graphical-playground.com/docs/engine/cpp-api-reference) -- [**Guía de Programación en C++**](https://docs.graphical-playground.com/docs/engine/programming-with-cpp) -- [**Estándar de Código C++**](https://docs.graphical-playground.com/docs/engine/programming-with-cpp/coding-standard) - -### Rutas de Aprendizaje - -Graphical Playground está construido alrededor de una Pedagogía Deconstructivista: queremos que desmontes el motor y aprendas cómo funciona. Para orientar tus estudios, hemos elaborado rutas de aprendizaje estructuradas que te llevan desde los conceptos fundamentales de la programación gráfica hasta la arquitectura avanzada de motores. - -- [**Explorar las Rutas de Aprendizaje**](https://graphical-playground.com/discover) - - + ## Contribuir ¡Damos la bienvenida a las contribuciones de todos! Ya sea que estés corrigiendo un error, implementando nuevas funcionalidades o mejorando nuestra documentación, tu ayuda es apreciada. Consulta nuestra guía completa [CONTRIBUTING.md](./CONTRIBUTING.md) para información detallada sobre nuestros estándares y el proceso de revisión de pull requests. diff --git a/translations/fr/README.md b/translations/fr/README.md index 8416406..b132879 100644 --- a/translations/fr/README.md +++ b/translations/fr/README.md @@ -8,164 +8,9 @@ # [@GraphicalPlayground](https://github.com/GraphicalPlayground)/gp-engine 🌎 Lire en : [English](../../README.md) | [Español](../es/README.md) | [Français](../fr/README.md) | [简体中文](../zh-cn/README.md) - + -**Table des matières** -[Aperçu](#aperçu) -┕ [Premiers Pas](#premiers-pas) -┕ [Prérequis](#prérequis) -┕ [Compilation du Moteur](#compilation-du-moteur) -┕ [Galerie](#galerie) -[Architecture](#architecture) -┕ [Systèmes Principaux](#systèmes-principaux) -┕ [Abstractions Progressives](#abstractions-progressives) -┕ [Pipelines de Rendu (OpenGL / Vulkan / DirectX / ...)](#pipelines-de-rendu-opengl--vulkan--directx--) -[Utilisation et Expérimentation](#utilisation-et-expérimentation) -┕ [Projets Exemples](#projets-exemples) -┕ [Programmation de Shaders](#programmation-de-shaders) -[Documentation](#documentation) -┕ [Référence API](#référence-api) -┕ [Parcours d'Apprentissage](#parcours-dapprentissage) -[Contribuer](#contribuer) -┕ [Code de Conduite](#code-de-conduite) -┕ [Sécurité](#sécurité) -┕ [Licence](#licence) -┕ [Dons](#dons) -[Contact](#contact) - -## Aperçu - -**gp-engine** est un moteur graphique C++ spécifiquement conçu pour l'apprentissage, l'expérimentation et l'enseignement des architectures de rendu modernes. - -Construit autour d'une **Pédagogie Déconstructiviste**, le moteur comble le fossé entre les outils créatifs de haut niveau et la programmation matérielle de bas niveau. Plutôt que de masquer la complexité derrière un système boîte noire, `gp-engine` fournit des abstractions progressives sur les APIs de rendu modernes (OpenGL et Vulkan). Il permet aux utilisateurs de déconstruire, étudier, modifier et réimplémenter proprement les concepts graphiques fondamentaux, des algorithmes de rendu de base aux architectures GPU avancées, sans avoir à maîtriser des millions de lignes de code hérité. - -### Premiers Pas - -Bienvenue dans l'écosystème Graphical Playground. Pour commencer à expérimenter avec `gp-engine`, vous devrez cloner le dépôt et configurer l'environnement de compilation. Le moteur est construit avec une chaîne d'outils C++23 moderne et repose sur une architecture modulaire de qualité production. - -Commencez par cloner le dépôt ainsi que ses sous-modules : - -```bash -git clone --recursive https://github.com/GraphicalPlayground/gp-engine.git -cd gp-engine -``` - -### Prérequis - -Étant donné que `gp-engine` tire parti des APIs graphiques modernes et des dernières fonctionnalités de C++, assurez-vous que votre environnement de développement satisfait les exigences suivantes : - -- **Compilateur** : Un compilateur compatible C++23 (GCC 13+, Clang 16+, ou MSVC 19.38+) -- **Système de Build** : CMake (version 3.20 ou supérieure) -- **Pilotes Graphiques** : Des pilotes GPU à jour avec prise en charge de : - - Vulkan `tba` - - OpenGL `tba` - - DirectX `tba` (Windows uniquement) - - Metal `tba` (macOS uniquement) - -### Compilation du Moteur - -Le moteur utilise les CMake Presets pour simplifier la configuration et la compilation sur différentes plateformes et environnements. Nous recommandons d'effectuer une compilation hors du répertoire source, ce que les presets gèrent automatiquement afin de garder le répertoire de votre projet propre. - -**Prérequis importants pour Linux** : Nos presets Linux nécessitent spécifiquement le compilateur Clang (`clang` et `clang++`) ainsi que `ccache` (cache de compilateur) installés sur votre système avant la compilation. - -**1. Lister les presets disponibles :** - -Vérifiez d'abord les presets de configuration disponibles pour votre plateforme spécifique (Linux, Windows ou macOS) : - -```bash -cmake --list-presets -``` - -_Exemple de sortie :_ - -```text -Available configure presets: - - "linux-release" - "linux-debug" - "linux-profile" - "linux-development" -``` - -> (Remarque : Vous verrez des préfixes `windows-...` ou `macos-...` selon votre système d'exploitation). - -Pour des informations détaillées sur ce qu'implique chaque configuration, veuillez consulter la -[documentation sur les Types de Build](https://docs.graphical-playground.com/docs/gp-engine/Programming%20With%20C++/GP%20Build%20Tool/Build%20Type). - -**2. Configurer le projet :** - -Sélectionnez le preset approprié à votre environnement et générez les fichiers de build. Par exemple, pour configurer un build de développement sur Linux : - -```bash -cmake --preset linux-development -``` - -> Remarque : Vous pouvez toujours ajouter des flags comme `-DGP_USE_VULKAN=ON` ou `-DGP_USE_OPENGL=ON` à votre commande de preset selon le backend de rendu que vous souhaitez cibler. Consultez la [documentation](#documentation) pour plus de détails sur la configuration des backends de rendu. - -**3. Compiler le projet :** - -Compilez le moteur en utilisant le preset de build correspondant. Vous pouvez également ajouter le flag `-j` pour utiliser plusieurs cœurs CPU et accélérer le processus : - -```bash -cmake --build --preset linux-development -j$(nproc) -``` - -Une fois la compilation réussie, les binaires compilés et les projets d'expérimentation exemples seront situés dans le répertoire `binaries/bin/`. Vous pouvez exécuter l'un des exécutables exemples de base pour vérifier que le pipeline de rendu et le contexte de fenêtrage se sont initialisés correctement. - -### Galerie - -_en cours..._ - -## Architecture - -_en cours..._ - -### Systèmes Principaux - -_en cours..._ - -### Abstractions Progressives - -_en cours..._ - -### Pipelines de Rendu (OpenGL / Vulkan / DirectX / ...) - -_en cours..._ - -## Utilisation et Expérimentation - -_en cours..._ - -### Projets Exemples - -_en cours..._ - -### Programmation de Shaders - -_en cours..._ - -## Documentation - -La documentation complète de `gp-engine` est hébergée sur notre portail de documentation principal. Que vous dessiniez votre premier triangle ou que vous écriviez un pass de rendu Vulkan personnalisé, nos guides sont conçus pour soutenir votre expérimentation. - -- [**Portail de Documentation Principal**](https://docs.graphical-playground.com) -- [**Introduction au Moteur**](https://docs.graphical-playground.com/docs/engine/intro) - -### Référence API - -Notre documentation détaillée de l'API C++ décrit les classes principales, les pipelines de rendu et les bibliothèques mathématiques qui composent `gp-engine`. Si vous étendez le moteur ou modifiez ses composants principaux, veuillez consulter nos guides C++ et nos règles de formatage pour vous assurer que votre code s'aligne avec l'architecture du projet. - -- [**Référence de l'API C++**](https://docs.graphical-playground.com/docs/engine/cpp-api-reference) -- [**Guide de Programmation C++**](https://docs.graphical-playground.com/docs/engine/programming-with-cpp) -- [**Standard de Code C++**](https://docs.graphical-playground.com/docs/engine/programming-with-cpp/coding-standard) - -### Parcours d'Apprentissage - -Graphical Playground est construit autour d'une Pédagogie Déconstructiviste : nous voulons que vous démontiez le moteur et compreniez comment il fonctionne. Pour guider vos études, nous avons élaboré des parcours d'apprentissage structurés qui vous emmènent des concepts fondamentaux de la programmation graphique jusqu'aux architectures de moteurs avancées. - -- [**Explorer les Parcours d'Apprentissage**](https://graphical-playground.com/discover) - - + ## Contribuer Nous accueillons les contributions de tous ! Que vous corrigiez un bug, implémentiez de nouvelles fonctionnalités ou amélioriez notre documentation, votre aide est appréciée. Consultez notre guide complet [CONTRIBUTING.md](./CONTRIBUTING.md) pour des informations détaillées sur nos standards et le processus de revue des pull requests. diff --git a/translations/zh-cn/README.md b/translations/zh-cn/README.md index f6d9a11..b9c5c4a 100644 --- a/translations/zh-cn/README.md +++ b/translations/zh-cn/README.md @@ -8,164 +8,9 @@ # [@GraphicalPlayground](https://github.com/GraphicalPlayground)/gp-engine 🌎 阅读语言:[English](../../README.md) | [Español](../es/README.md) | [Français](../fr/README.md) | [简体中文](../zh-cn/README.md) - + -**目录** -[概述](#概述) -┕ [快速开始](#快速开始) -┕ [前置条件](#前置条件) -┕ [构建引擎](#构建引擎) -┕ [图库](#图库) -[架构](#架构) -┕ [核心系统](#核心系统) -┕ [渐进式抽象](#渐进式抽象) -┕ [渲染管线(OpenGL / Vulkan / DirectX / ...)](#渲染管线opengl--vulkan--directx--) -[使用与实验](#使用与实验) -┕ [示例项目](#示例项目) -┕ [Shader 编程](#shader-编程) -[文档](#文档) -┕ [API 参考](#api-参考) -┕ [学习路径](#学习路径) -[贡献](#贡献) -┕ [行为准则](#行为准则) -┕ [安全](#安全) -┕ [许可证](#许可证) -┕ [捐赠](#捐赠) -[联系](#联系) - -## 概述 - -**gp-engine** 是一个专为学习、实验和教授现代渲染架构而设计的 C++ 图形引擎。 - -引擎以**解构主义教学法**为核心,在高层创意工具与底层硬件编程之间架起桥梁。`gp-engine` 不会将复杂性隐藏在黑盒系统背后,而是在现代渲染 API(OpenGL 和 Vulkan)之上提供渐进式抽象层,让用户能够拆解、研究、修改并干净地重新实现核心图形概念——从基础渲染算法到先进的 GPU 架构,无需掌握数百万行的遗留代码。 - -### 快速开始 - -欢迎来到 Graphical Playground 生态系统。要开始使用 `gp-engine` 进行实验,你需要克隆仓库并配置构建环境。引擎基于现代 C++23 工具链构建,采用模块化的生产级架构。 - -首先,克隆仓库及其子模块: - -```bash -git clone --recursive https://github.com/GraphicalPlayground/gp-engine.git -cd gp-engine -``` - -### 前置条件 - -由于 `gp-engine` 充分利用了现代图形 API 和最新的 C++ 特性,请确保你的开发环境满足以下要求: - -- **编译器**:兼容 C++23 的编译器(GCC 13+、Clang 16+ 或 MSVC 19.38+) -- **构建系统**:CMake(3.20 或更高版本) -- **显卡驱动**:支持以下 API 的最新 GPU 驱动: - - Vulkan `tba` - - OpenGL `tba` - - DirectX `tba`(仅限 Windows) - - Metal `tba`(仅限 macOS) - -### 构建引擎 - -引擎使用 CMake Presets 来简化不同平台和环境下的配置与构建流程。我们建议执行源外构建(out-of-source build),预设会自动处理,以保持项目目录整洁。 - -**Linux 重要前置条件**:我们的 Linux 预设特别要求在构建前已在系统中安装 Clang 编译器(`clang` 和 `clang++`)以及 `ccache`(编译器缓存)。 - -**1. 列出可用预设:** - -首先,查看适用于你所在平台(Linux、Windows 或 macOS)的可用配置预设: - -```bash -cmake --list-presets -``` - -_示例输出:_ - -```text -Available configure presets: - - "linux-release" - "linux-debug" - "linux-profile" - "linux-development" -``` - -> (注意:根据你的操作系统,你会看到 `windows-...` 或 `macos-...` 前缀)。 - -有关每种配置的详细说明,请参阅 -[构建类型文档](https://docs.graphical-playground.com/docs/gp-engine/Programming%20With%20C++/GP%20Build%20Tool/Build%20Type)。 - -**2. 配置项目:** - -根据你的环境选择合适的预设并生成构建文件。例如,在 Linux 上配置开发构建: - -```bash -cmake --preset linux-development -``` - -> 注意:你仍可以根据想要使用的渲染后端,在预设命令后附加 `-DGP_USE_VULKAN=ON` 或 `-DGP_USE_OPENGL=ON` 等标志。有关配置渲染后端的详细信息,请阅读[文档](#文档)。 - -**3. 编译项目:** - -使用对应的构建预设编译引擎。你也可以附加 `-j` 标志以利用多个 CPU 核心加速编译过程: - -```bash -cmake --build --preset linux-development -j$(nproc) -``` - -构建成功完成后,编译好的二进制文件和示例实验项目将位于 `binaries/bin/` 目录中。你可以运行一个基本示例可执行文件,以验证渲染管线和窗口上下文是否已正确初始化。 - -### 图库 - -_建设中..._ - -## 架构 - -_建设中..._ - -### 核心系统 - -_建设中..._ - -### 渐进式抽象 - -_建设中..._ - -### 渲染管线(OpenGL / Vulkan / DirectX / ...) - -_建设中..._ - -## 使用与实验 - -_建设中..._ - -### 示例项目 - -_建设中..._ - -### Shader 编程 - -_建设中..._ - -## 文档 - -`gp-engine` 的完整文档托管在我们的主文档门户上。无论你是在绘制第一个三角形,还是编写自定义 Vulkan 渲染通道,我们的指南都旨在支持你的实验探索。 - -- [**主文档门户**](https://docs.graphical-playground.com) -- [**引擎介绍**](https://docs.graphical-playground.com/docs/engine/intro) - -### API 参考 - -我们详细的 C++ API 文档概述了构成 `gp-engine` 的核心类、渲染管线和数学库。如果你在扩展引擎或修改其核心组件,请查阅我们的 C++ 指南和格式规范,以确保你的代码符合项目架构。 - -- [**C++ API 参考**](https://docs.graphical-playground.com/docs/engine/cpp-api-reference) -- [**C++ 编程指南**](https://docs.graphical-playground.com/docs/engine/programming-with-cpp) -- [**C++ 编码规范**](https://docs.graphical-playground.com/docs/engine/programming-with-cpp/coding-standard) - -### 学习路径 - -Graphical Playground 围绕解构主义教学法构建,我们希望你拆解引擎并了解其工作原理。为了指导你的学习,我们精心设计了结构化学习路径,带你从图形编程基础概念一路深入到高级引擎架构。 - -- [**探索学习路径**](https://graphical-playground.com/discover) - - + ## 贡献 我们欢迎所有人的贡献!无论你是在修复 bug、实现新功能还是改进我们的文档,你的帮助都备受感激。请查阅我们完整的 [CONTRIBUTING.md](./CONTRIBUTING.md) 指南,了解我们的标准和 pull request 审查流程的详细信息。