
存档在 ‘未分类’ 分类
2021 GitHub 天际线
2022年5月14日
独立版OpenAL/EE SDK
2022年3月31日很多朋友喜欢使用我的OpenAL/EE,而它也在过去20年为近百款游戏和应用提供了出色的音频支持。
但它一直存在于CMGDK/ULRE中,没有提供独立的版本。
现新版CMGDK/ULRE开发时,各模块设计独立,也方便了OpenAL/EE可以做为独立SDK提供。
现大家可从以下链接Clone最新的 OpenAL/EE以及插件(Wav/Vorbis OGG/Opus)源代码。
服务器已升级
2021年9月18日前几天阿里云给了个短信,说是SUSE Linux Enterprise Server (SLES) 操作系统将于2021年10月30日正式开启收费。我就登陆阿里云看了一下,发现我用的是openSUSE 13.1。难道是所有的suse/openSUSE都收费?算了,顺道把服务器升级成了最新的openSUSE 15.3、MariaDB 10.5.10、PHP7、WordPress 5.8.1。
PipelineCache.com Server计划
2020年11月4日PipelineCache真的是一个可以提速的好东西。
刚刚买了下PipelineCache.com/VKPipelineCache.com两个域名,计划在其上架设一个小型DB,提供vulkan的pipelinecache存取服务。
具体事宜请关注本站通知。
2020年秋天的第一张延迟渲染
2020年10月22日新工具 MaterialEditor
2020年10月14日之前写了基于XML的Shader/Material系统,也有了命令行的Material编译器。
但在使用中发现,编辑、查错、编译、复制、预览。。。整个流程下来还是挺繁琐的,于是动手制作了如下小工具。
使用QT 5.15.1做为GUI API,跨平台。
关于前几日网站无法访问的说明
2020年10月8日前几日由于服务器MariaDB Server(10.1.6)崩溃,造成了网站Wordpress无法访问。
独立的GLSL编译工具
2020年9月5日由于使用SPIRV-Cross以及glslang的源代码版本有太多的编译配置选项,很烦,所以我制作了一个动态链接库版的GLSL到SPV编译器。
使用代码大致如下:
namespace glsl_compiler
{
enum class DescriptorType //等同VkDescriptorType
{
SAMPLER = 0,
COMBINED_IMAGE_SAMPLER = 1,
SAMPLED_IMAGE = 2,
STORAGE_IMAGE = 3,
UNIFORM_TEXEL_BUFFER = 4,
STORAGE_TEXEL_BUFFER = 5,
UNIFORM_BUFFER = 6,
STORAGE_BUFFER = 7,
UNIFORM_BUFFER_DYNAMIC = 8,
STORAGE_BUFFER_DYNAMIC = 9,
INPUT_ATTACHMENT = 10,
BEGIN_RANGE=SAMPLER,
END_RANGE=INPUT_ATTACHMENT,
RANGE_SIZE=(END_RANGE-BEGIN_RANGE)+1
};
enum class VertexAttribBaseType
{
Bool=0,
Int,
UInt,
Float,
Double,
};//enum class VertexAttribBaseType
struct ShaderStage
{
char name[128];
uint8_t location;
uint32_t basetype; //对应enum class VertexAttribBaseType
uint32_t vec_size;
};//
struct ShaderStageData
{
uint32_t count;
ShaderStage *items;
};
struct ShaderResource
{
char name[128];
uint8_t set;
uint8_t binding;
};
struct ShaderResourceData
{
uint32_t count;
ShaderResource *items;
};
struct SPVData
{
bool result;
char *log;
char *debug_log;
uint32_t *spv_data;
uint32_t spv_length;
ShaderStageData input,output;
ShaderResourceData resource[size_t(DescriptorType::RANGE_SIZE)];
};
struct GLSLCompilerInterface
{
bool (*Init)(); ///<初始化
void (*Close)(); ///<关闭
uint32_t (*GetType)(const char *ext_name); ///<根据扩展名获取SHADER类型
SPVData * (*Compile)(const uint32_t type,const char *source); ///<编译glsl
void (*Free)(SPVData *); ///<释放数据
};
}//namespace glsl_shader
使用方法:
- 加载动态链接库
- 从动态链接库获取GetInterface函数
- 用GetInterface函数得到一个GLSLCompilerInterface指针(以下简称GSI)
- 调用GSI::Init函数
- 自行加载glsl的文本,并保证为ansi或utf8字符集
- 截取glsl文件扩展名(不包括.),或自行传递一个字符串给GSI::GetType函数,以获取shader类型。
shader文件扩展名规则同glslangValidator- vert 顶点
- tesc 镶嵌控制
- tese 镶嵌评估
- geom 几何
- frag 片断
- comp 计算
- task 任务
- mesh 网格
- 调用GSI::Compile函数,并同时传递shader类型以及shader文本字符串
- 根据得到的SPVData::result来判断是否成功
- result为false表示失败,在log/debug_log中包含返回的错误信息
- result为true表示成功,在spv_data,spv_length中包含编译好的spv数据
- 自行处理spv数据
- 调用GSI::Free释放SPVData指针
文本显示,一个看起来很简单的功能
2020年8月4日现所有主要开源仓库一览
2020年4月5日- 现今主力开发的超轻量级渲染引擎
- https://github.com/hyzboy/ULRE
- 曾经的旧主力引擎
- https://github.com/hyzboy/CMGameEngine
- 曾经短暂编写PHP网站时总结的小型PHP工具库
- https://github.com/hyzboy/CMPHP
- 修改的仅支持OpenGL Core的GLEW
- https://github.com/hyzboy/GLEWCore