如果当前是打开的是qt/glfw工程,你需要在engine.h设置资源工作路径:
#define WORKDIR "/users/username/qt_engine"
在es工程(手机上), 我们使用native的接口读取资源。
ios工程引用的资源全部是PVRTC压缩格式的纹理, 需要手动转换, 运行下面脚本即可生成对应的texture
cd tools
sh texture.sh
sh ios_hash.sh
注意生成时间会比较长, 耐心等待
- qt 5.11
- opengl 330
- opengles 300
- freetype
目前支持三种光照
- 聚光灯
黑暗交替自然过渡, 且光照强度随着距离变远而衰减
- 点光源
光照强度随着距离变远而衰减
- 平行光
-
实现 WASD 按键来前后左右移动相机
-
按住Space键绕前方定点旋转相机
-
按上下左右键来改变场景里的光的方向
初步实现了显示TrueType字体
点击事件系统
ui可以画Label, Button
右下角即灯光空间的depth-buffer
支持蒙皮动画,和高模低模LOD
比如使用GPU Instance 批量画草, geomotry Shader显示法线,变换帧缓存后处理, PBR、BRDF、 IBL 更多的功能等你去探索
后期会逐步扩展引擎, 比如AR模块、lua热更模块、编写更多的geomotry以便调试
更多的文档链接:
默认的glsl语法是不支持#include的, 我们这里实现了预编译扩展的效果, 使用如下:
#include "lib/brdf.glsl"
注意include的路径是相对于shader目录的路径,而不是当前shader所在的路径
你可以在glsl使用#ifdef类似c的语法这样定义
#ifdef _CALLBACK__
for(int i=0;i<LIGHT_NUM;i++)
{
[...]
}
#else
[...]
#endif
在c++中在shader运行时编译前,这样设置对glsl的宏
Shader("model.vs","outline.fs",nullptr, Macro("_CALLBACK__","","LIGHT_NUM","4")
对于和ES版本的转换, 你不必太关注更多的细节, 引擎在预编译shader的时候,会自动处理好如下:
- 浮点数精度问题
es浮点数默认是:precision mediump float;
- version声明
引擎实现移动版本会自动转化为 #version 300 es
- 压缩纹理支持
支持PVRTC 压缩纹理, 包含pvrtc4 & pcrtv2
如果shader报错,会显示对应的行号,你可以去temp目录查看预编译好的shader, 迅速定位到问题。
注意: 只有在DEBUG模式下, 才会生成预编译的shader, Release下为了效率是不生成预编译的shder的。
主要是qt是跨平台的, qt可以支持编写界面,用以扩展引擎编辑器,这里只是初步的实现。
关于工具的使用, 参考: tools references
penghuailiang
2019-05-10