KlayGE 引擎学习-001
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lWlSlet9-1680688988724)(images/KlayGE_logo.png)]
一、KlayGE引擎介绍
软件简介
KlayGE中文译为:粘土游戏引擎,是一个开源、跨平台,基于插件结构的游戏引擎。该引擎从 2003 年开始研发,设计目的是用最先进的技术武装引擎,使游戏的开发、测试、移植得到简化。
该引擎是国人龚敏敏开发!
技术特性:
-
图形
-
支持 DirectX 11-12.0,OpenGL 2.0-4.6,以及 OpenGL ES 2.0
-
采用 fxml 作为可渲染物体的特效脚本,可以直接把美工生成的特效导出使用
-
Python 脚本可以在运行期动态解释,所以修改脚本以后不需要重新编译
-
可以通过高度图来建立地形场景
-
支持骨骼动画
-
硬件遮挡裁减
-
粒子系统
-
后处理技术
-
自适应硬件状态缓存和延迟更新机制
-
支持逐像素光照和渲染技术
-
基于距离场的字体系统,兼有矢量字体和点阵字体的优点
支持过程纹理 -
支持次表面散射,可用于渲染树叶、皮肤、玉器等半透明材质
-
支持 PN Triangles 技术,在运行期自动光滑低模
-
-
着色
- ·包含常用操作的 shader
- 完全抽象出图形 API
- 多遍渲染
- 完全支持可编程着色
- 可以使用多条渲染流
-
光照
- 动态光照
- 全方向阴影贴图
-
音频
- 支持各种平台的音频输出
- 支持 3D 声音定位和多普勒效应
- 输入格式支持 Ogg Vorbis
- 支持流式播放
-
工具
- 法线图生成器,可以从高度图生成法线图
- 距离图生成器,可以从高度图或 3D 纹理生成距离图
- MeshML 导出插件,从 3ds Max 导出模型
- OpenGL 兼容性检测工具
HDR 压缩器,支持 cubemap 和 2D HDR 纹理的压缩 - Normalmap 压缩器,2:1 或 4:1 的压缩率
- 基于 distance 的字体生成器,可以把矢量字体转换成引擎使用的字体格式
- FXML2Shader 工具,把 FXML 的特效脚本转换成 HLSL 或 Cg
-
程序特性
- KlayGE 是开放源代码的,包含了 100% 的引擎、工具的源代码。
- 可扩展的、面向对象的 C++ 引擎,带有用于静态和动态加载代码和资源的软件架构,易于移植和调试。
- 用 Python 作为脚本语言,提供了对动态数据的自动支持,开发调试方便,并很容易和 C++ 主程序配合工作。
二、主要模块介绍
KlayGE的设计也比较容易理解,大体分成以下几部分:
-
DXBC2GLSL DX-GLSL shader转换工具
-
External: 第三方扩展依赖库
- 7z:压缩
- assimp: 外部模型导入
- D3dCompiler: dx HLSL 编译工具
- fmt:
- FreeImage:
- freetype
- goolgetest: 测试框架
- libogg: 音频
- liborbis:
- openal-soft
- Python
- zlib
-
glloader: OpenGL API 接口加载
-
KFL: 基础公共库
-
kfont: 字体库
-
KlayGE: 引擎库
-
Engine: 引擎主体
-
Core
-
KlayGE_Core
-
KlayGE_RC
-
TableGen
-
-
KGEConfig
-
Plugins
- Audio
- KlayGE_AudioDataSource_NullAudioDataSource
- KlayGE_AudioDataSource_OggVorbis
- KlayGE_AudioEngine_NullAudio
- KlayGE_AudioEngine_OpenAL
- KlayGE_AudioEngine_XAudio
- Devhelper
- KlayGE_DevHelper
- Render
- KlayGE_RenderEngine_D3D11
- KlayGE_RenderEngine_D3D12
- KlayGE_RenderEngine_NullRender
- KlayGE_RenderEngine_OpenGL
- Input
- KlayGE_InputEngine_MsgInput
- KlayGE_InputEngine_NullInput
- Scene Management
- KlayGE_Scene_OCTree
- Script
- KlayGE_ScriptEngine_NullScript
- KlayGE_ScriptEngine_Python
- Show
- KlayGE_ShowEngine_DShow
- KlayGE_ShowEngine_MFShow
- KlayGE_ShowEngine_NullShow
- Audio
-
-
Samples
- AreaLighting
- AtmosphericScattering
- CascadedShadowMap
- CausticsMap
- DeepGBuffers
- DeferredRendering
- DetailedSurface
- DetailedSurfaceDR
- EnvLighting
- Foliage
- GPUParticleSystem
- JudaTexViewer
- Metalness
- Metalness
- MotionBlurDoF
- Ocean
- OIT
- ParticleEditor
- PostProcessing
- ProceduralTex
- Reflection
- SampleCommon
- ScenePlayer
- ShadowCubeMap
- SkinnedMesh
- Sound
- SSSSS
- SubSurface
- Text
- VDMParticle
- VectorTex
- VideoTexture
-
Tests
- Tests
-
Tools
-
KGEditor
- KGEditor
- KGEditorCore
- KGEditorCoreWrapper
-
MtlEditor
- MtlEditor
- MtlEditorCore
- MtlEditorCoreWrapper
-
TexViewer
- TexViewer
- TexViewerCore
- TexViewerCoreWrapper
-
ColorGradingTexGen
-
D3DCompilerWrapper
-
DistanceMapCreator
-
FFTLensEffectsGen
-
Fxml2Shader
-
FxmlJit
-
GLCompatibility
-
GLESCompatibility
-
HDRCompressor
-
HWCollect
-
ImposterGen
-
JudaTexPacker
-
KFontGen
-
NoiseTexGen
-
Normal2NaLength
-
PlatformDeployer
-
PrefilterCube
-
Tex2JTML
-
ToolCommon
-
VectorTexGen
-
-
Tutorials
-
DistanceMapping
-
Fractal
-
InputCaps
-
RasterizationOrder
-
Refract
-
Tessellation
-
Tutor1
-
Tutor2
-
VertexDisplacement
-
-