当前位置: 首页 > news >正文

网站定制分享网站正在建设中图片

网站定制分享,网站正在建设中图片,小程序app系统开发,搭建网站复杂吗文章目录 Execution of Standalone Wrapper构建 (CMake)依赖关系构建步骤如果需要更改 GLSL 语法测试运行测试基本内部操作 Execution of Standalone Wrapper 要使用独立的二进制形式,请执行glslang,它将打印一条使用语句。基本操作是给它一个包含着色器…

文章目录

      • Execution of Standalone Wrapper
      • 构建 (CMake)
      • 依赖关系
      • 构建步骤
      • 如果需要更改 GLSL 语法
      • 测试
      • 运行测试
      • 基本内部操作

Execution of Standalone Wrapper

要使用独立的二进制形式,请执行glslang,它将打印一条使用语句。基本操作是给它一个包含着色器的文件,它会打印出警告/错误以及可选的 AST。

应用的特定于阶段的规则基于文件扩展名:

  • vert 顶点着色器
  • tesc 曲面细分控制着色器
  • tese 曲面细分评估着色器
  • geom 几何着色器
  • frag 片段着色器
  • comp 计算着色器

对于光线追踪管道着色器:

  • rgen 光线生成着色器
  • rint 光线相交着色器
  • rahit 光线任意命中着色器
  • rchit 光线最接近的着色器
  • rmiss 光线缺失着色器
  • rcall 可调用着色器

还有一个非着色器扩展:

  • conf 有关限制的配置文件,请参阅使用阶段的示例

构建 (CMake)

除了手动构建,您还可以直接从 GitHub 上的main-tot 版本下载适合您平台的二进制文件,这些二进制文件在成功测试后由构建机器人自动上传,并且它们始终反映main分支的最新状态。

依赖关系

  • C++17 编译器。(对于 MSVS:使用 2019 或更高版本。)
  • CMake:用于生成编译目标。
  • make: Linux , ninja 是一个替代方案(如果已配置)。
  • Python 3.x:用于执行 SPIRV-Tools 脚本。(如果不使用 SPIRV-Tools 并且“外部”子目录不存在,则可选。)
  • bison:可选,但在更改语法时需要(glslang.y)。
  • googletest:可选,但在对 glslang 进行任何更改时应使用。

构建步骤

以下步骤假设使用 Bash shell。在 Windows 上,可能就是 Git Bash shell 或选择的其他 shell。

  • 检出项目
cd <parent of where you want glslang to be there>
git clone https://github.com/KhronosGroup/glslang.git
  • 检查外部项目
cd <the directory glslang was cloned to, "External" will be a subdirectory>
git clone https://github.com/google/googletest.git External/googletest

临时添加:另外执行以下操作以避免 googletest 中的当前有所损坏:

cd External/googletest
git checkout 0c400f67fcf305869c5fb113dd296eca266c9725
cd ../..

如果您希望确保从 HLSL 生成的 SPIR-V 对于 Vulkan 是合法的,希望调用 -Os 来减少 HLSL 或 GLSL 中的 SPIR-V 大小,或者希望运行集成测试套件,请使用以下命令安装spirv-tools:

./update_glslang_sources.py
  • 配置
    假设源目录为$SOURCE_DIR,构建目录为 $BUILD_DIR。首先确保构建目录存在,然后进入到它:
mkdir -p $BUILD_DIR
cd $BUILD_DIR

对于在 Linux 上构建:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" $SOURCE_DIR
# "Release" (for CMAKE_BUILD_TYPE) could also be "Debug" or "RelWithDebInfo"
  • 构建和安装
# for Linux:
make -j4 install

如果使用MSVC(Microsoft Visual Studio编译器),运行CMake配置后,使用配置管理器检查项目INSTALL。

如果需要更改 GLSL 语法

如果语法 glslang/MachineIndependent/glslang.y 发生变化,则必须使用 bison 重新编译,输出文件将提交到存储库,以避免每个开发人员在语法更改非常罕见时需要配置 bison 来编译项目。对于 Windows,您可以从GnuWin32获取二进制文件 。

重建的命令是:

bison --defines=MachineIndependent/glslang_tab.cpp.h-t MachineIndependent/glslang.y-o MachineIndependent/glslang_tab.cpp

updateGrammar当从 glslang 存储库的 glslang 子目录执行时,上述命令也可以在 bash 脚本中使用。

测试

目前,glslang 中存在两种测试工具:一种是Google Test,一种是runtestsscript。前者运行单元测试和单着色器单线程集成测试,而后者运行多着色器链接测试和多线程测试。

运行测试

runtests脚本需要将编译的二进制文件安装到**$BUILD_DIR/install**。请确保您**-DCMAKE_INSTALL_PREFIX**在构建时已向 CMake 提供了正确的配置(使用);否则,您可能需要脚本中的路径runtests。

运行Google Test 支持的测试:

cd $BUILD_DIR# for Linux:
ctest

运行runtests脚本支持的测试:

cd $SOURCE_DIR/Test && ./runtests

基本内部操作

  • 初始词法分析由 中的预处理器完成 MachineIndependent/Preprocessor,然后由 中的 GLSL 扫描器进行细化MachineIndependent/Scan.cpp。目前没有使用flex。
  • MachineIndependent/glslang.y代码是在符号表和 AST 的帮助下使用 bison 进行解析的。符号表不会传递到后端;中间表示是独立的。该树是由语法产生式构建的,其中许多被卸载到ParseHelper.cpp、 和Intermediate.cpp。
  • 中间表示非常高级,并表示为内存中的树。这不会丢失原始程序中的任何信息,并且可以有效地将解析结果传输到后端。在 AST 中,常量被传播和折叠,并且消除了极少量的死代码。
    为了帮助链接和反射,AST 中的最后一个顶级分支列出了所有全局符号。
  • 后端编译器的主要算法是遍历树(高级中间表示),并创建内部目标代码表示。有一个关于如何执行此操作的示例MachineIndependent/intermOut.cpp。
  • 将树简化为线性字节码样式的低级中间表示可能是生成完全优化的代码的好方法。
  • 目前仍然存在一些已失效的旧式链接器类型代码。
  • 内存池:解析使用从 C++std类型派生的类型,使用自定义分配器将它们放入内存池中。这使得单个容器/内容物的分配只需几个周期并且无需重新分配。该池在 AST 生成并处理后弹出。

使用很简单:如果要调用new,则分为三种情况:

  • 该对象来自池(它的基类 POOL_ALLOCATOR_NEW_DELETE中有宏),您不必调用delete
  • 它是一个TString,在这种情况下 call NewPoolTString(),它从池中获取它,并且没有相应的delete
  • 该对象不是来自池,你必须对你的对象进行正常的 C++ 内存管理new
  • 功能可以通过版本/扩展/级别/配置文件进行保护:请参见中的评论glslang/MachineIndependent/Versions.cpp。
http://www.yayakq.cn/news/475443/

相关文章:

  • 免费国外网站wordpress主题官方网站
  • 网站设计公司(信科网络)请打开123720的网站百度
  • 聊城门户网站外包网站公司
  • 铁岭做网站公司哪家好发布网站制作
  • 企业网站建设规划的基本原则有哪些个人怎么建立网站吗
  • 怎么查看自己网站是否被收录花店asp网站源码
  • 住房和城乡建设部网站准考证二级域名网站怎么建设
  • 淮南网站开发kj6699的seo综合查询
  • 网站jianshe百度一下百度官方网
  • 中国移动官方网站登录入口如何解决网站兼容性问题
  • 做网站多少费用centos 5.5 wordpress 图片不显示
  • 潮州+网站建设沈阳京科医院怎么样
  • vs2017可以做网站吗山东城乡和住房建设厅官网
  • 网站建设对企业的发展建设英文网站费用
  • 集团网站建设 中企动力好品质高端网站设计厂家
  • 电气毕业设计代做网站wordpress页面上下级
  • 虚拟钱包对接网站开发视频教程工业信息化部网站备案查询
  • 咖啡的网站建设策划书常用的网络推广方法有
  • 深圳外贸建站网络推广价格成都广告设计公司排名
  • 做域名不做网站可以吗cdn网站网络加速器
  • js 网站源码我要发布招聘信息
  • 彩票网站开发制作广告投放收费标准
  • 网站建设软件设计做一个购物商城网站多少钱
  • 传奇网站免费空间网站建设数据的需求分析
  • 做网站的天津wordpress不用邮箱
  • 文化网站模板微信应用小程序
  • 织梦mip网站改造垂直汽车网站做电商的优势
  • 找人做一个网站需要多少钱科技有限公司是干什么的
  • wordpress建站手机端wordpress大学主题教程
  • 湖南网站建设价格学校网站资源建设方案