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

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

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

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

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

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

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,替换前可以备份一下原文件

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

换到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);
}

大功告成,坑弃回归Urho3D

bgfx入门练习3——编译自定义Shader的更多相关文章

  1. bgfx入门练习1——切换图形API驱动模式DX与OpenGL

    翻了下上次编译bgfx是去年2月份的事了,最近正好想试试DX,OpenGL双驱动,看Urho3D和Klayge光封装就头痛,人又懒,写OpenGL时也基本glfw,于是想到bgfx,不如再试试. 发现 ...

  2. Cocos2d-x项目移植到WP8系列之九:使用自定义shader

    本文原链接:http://www.cnblogs.com/zouzf/p/3995132.html 有时候想得到一些例如灰度图等特殊的渲染效果,就得用到自定义shader,关于shader的一些背景知 ...

  3. vim+makefile入门编辑,编译,差错实例

    vim+makefile入门编辑,编译,差错实例 vim makefile 编译 编写代码,一般在vim中编辑完后,输入:wq,在命令行下输入g++ hello.cc -o hello ,出现问题,打 ...

  4. bgfx入门练习2——找出DX,OpenGL驱动切换实现原理

    找到驱动切换的代码,自然而然就要找实现的位置了,简单搜了下,原来是GLSL Shader字节码转换到HLSL字节码,正好和Klayge做了相反的工作. 时间上似乎也差不多,Klyage是2014年搞的 ...

  5. unity中使用自定义shader进行光照贴图烘培无法出现透明度的坑爹问题

    最近开发中在对场景进行光照贴图烘焙时发现一个坑爹问题,在使用自定义shader的时候,shader命名中必须包含Transparent路径,否则烘焙的时候不对alpha通道进行计算,烘焙出来都是狗皮膏 ...

  6. SpringBoot入门(五)——自定义配置

    本文来自网易云社区 大部分比萨店也提供某种形式的自动配置.你可以点荤比萨.素比萨.香辣意大利比萨,或者是自动配置比萨中的极品--至尊比萨.在下单时,你并没有指定具体的辅料,你所点的比萨种类决定了所用的 ...

  7. UWP开发入门(四)——自定义CommandBar

    各位好,再次回到UWP开发入门系列,刚回归可能有些不适应,所以今天我们讲个简单的,自定义CommandBar,说通俗点就是自定义类似AppBarButton的东西,然后扔到CommandBar中使用. ...

  8. U3D 自定义shader创建Editor扩展

    “工欲善其事,必先利其器”Shader学习工具篇 最近一直忙于录制关于Shader入门的视频教程,其中一个反复的机械动作就是右键创建所需要的新Shader.悲剧的是每次打开的都是Unity3D默认的S ...

  9. Shader 入门笔记(一) 如何学习shader

    本笔记,是根据自己学习shader的笔记,主要是参照冯乐乐的<Shader 入门精要> 和游戏蛮牛shaderLad视频 和网上一些博客. 为啥要学习这个呐? 自己其实之前学过一段时间的s ...

随机推荐

  1. vue-cli使用vux时报错处理,“You may need an appropriate loader to handle this file type”

    先说解决方案: 在项目中找到build,找到webpack.base.conf.js 将vux给出的解决方案代码拷贝出来 const vuxLoader = require('vux-loader') ...

  2. mac下新建txt文本快捷方式.md

    转:127.0.0.1:47873/help/0-436/ms.help?method=page&id=A38C5670-BA28-44F3-BD5B-FCB46880E904&pro ...

  3. java api 批量数据库操作

    Statement.class:executeBatch() implement interface: PreparedStatement implement class: JdbcOdbcPrepa ...

  4. 关于处理java.lang.IllegalArgumentException at java.sql.Date.getHours异常

    https://segmentfault.com/a/1190000016937108

  5. 百度ueditor的图片上传,前后端交互使用

    百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor. ...

  6. 25. Reverse Nodes in k-Group (JAVA)

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k  ...

  7. 观察者模式C#实现实例(一)

    1.用例情景 1)定义一个闹钟(目标类),里面我们感兴趣的是时间值times,当times大于9.15时,通知观察者. 2)定义两个观察者,userA,userB,当收到times值时,作出判断,当t ...

  8. 阿里云SLB负载均衡与使用SSL域名证书

    阿里云SLB负载均衡与使用SSL证书 1.购买两台ECS服务器,这就是后台服务器,在这两个服务器上面部署你的网站,注意网站的端口要一样:比如都是 88. 2.在阿里云控制台的菜单里找到 负载均衡,创建 ...

  9. VirtualBox 桥接模式,虚拟机ping不通宿主机

    虚拟机为window server 2012 参考链接:https://blog.csdn.net/Leon_190/article/details/84937045#commentBox 该做的都做 ...

  10. Mybatis order by语句使用<Choose><When>动态拼装无效的原因及解决方法

    在使用 <choose> <when test=""> </when> <otherwise> </otherwise> ...