bgfx入门练习3——编译自定义Shader

马个鸡,总算编译过了自定义Shader,在此感谢自己,感谢自己,以及感谢自己。没有自己的努力,我是不可能解决这个问题的,自己真是太叼了。妈的智障!!!

管方那屎一样的make工具根本没用,反正我是折腾半天死活用不了,以及google都搜不到半点教程和相关解决方案让我差点放弃。

今早起来咽不下这口气,找出编译过的LumixEngine参考了一下,主要的问题就是不知道这个shaderc到底是怎么用的,缺少一个靠谱的参考。

根据这里提到,编译有include不到某某文件的问题,要包含bgfx_shader.sh,也就是要把bgfx/src目录加入到参数中

https://github.com/bkaradzic/bgfx/issues/1148

我目前用的成功的参数,例子测试的是bgfx\examples\01-cubes目录,图如下,建立dx11和glsl目录

bgfx入门练习3——编译自定义Shader

ogl.bat

shaderc -f vs_cubes.sc -o .\glsl\vs_cubes.bin --depends -i ..\..\src --varyingdef varying.def.sc --platform linux -p 120 --type vertex -O3
shaderc -f fs_cubes.sc -o .\glsl\fs_cubes.bin --depends -i ..\..\src --varyingdef varying.def.sc --platform linux -p 120 --type fragment -O3

编译shaderc项目,会生成到

bgfx\.build\win32_vs2015\bin\shadercRelease.exe

改名为shaderc.exe,或其他你自己喜欢的,我用的shaderc,放到这个01-cubes项目下。

拉个命令提示符快捷方式过来,点击就在本目录打开。然后运行ogl.bat就行了。

参数上参考的

bgfx\scripts\shader.mk

这个文件写的

分别是

-f glsl脚本文本

-o 输出文件名

-i 包含bgfx_shader.sh的路径

--varyingdef varying.def.sc文件

--platform shader参数,这个平台不管你是win下还是linux还是什么,只要是glsl shader,就写linux,这玩意并不区分window glsl shader还是linux glsl shader,这是参考shader.mk写的

格式分3种,VS,FS,CS,对应顶点,像素,计算着色器,前缀vs,fs,cs似乎是必需的,没验证,但是昨晚搜的时候好像哪提到过。

于是运行就能编译glsl的shader了。

dx11.bat

shaderc -f vs_cubes.sc -o .\dx11\vs_cubes.bin --depends -i ..\..\src --varyingdef varying.def.sc --platform windows -p vs_4_0 -O 3 --type vertex -O3
shaderc -f fs_cubes.sc -o .\dx11\fs_cubes.bin --depends -i ..\..\src --varyingdef varying.def.sc --platform windows -p ps_4_0 -O 3 --type fragment -O3

这是我用的dx11编译项

然后我们来试着修改一下fs shader内容

$input v_color0

/*
 * Copyright 2011-2018 Branimir Karadzic. All rights reserved.
 * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
 */

#include "../common/common.sh"

void main()
{
	// gl_FragColor = v_color0;
	gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}

把颜色改为纯红色

编译出来的bin替换

bgfx\examples\runtime\shaders\glsl

目录下对应的bin,替换前可以备份一下原文件

看到鲜红的颜色,知道终于成功了

bgfx入门练习3——编译自定义Shader

换到DX11模式再测试一下

$input v_color0

/*
 * Copyright 2011-2018 Branimir Karadzic. All rights reserved.
 * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
 */

#include "../common/common.sh"

void main()
{
	// gl_FragColor = v_color0;
	gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);
}

bgfx入门练习3——编译自定义Shader

大功告成,坑弃回归Urho3D

上一篇:Entity Framework Core 2.0 中使用LIKE 操作符


下一篇:Entity Framework Core生成的存储过程在MySQL中需要进行处理及PMC中的常用命令