UnityTips HLSL 的 #pragma 指令

2024-02-18  本文已影响0人  暴走TA

简介: 今天记录几个 pragma 的编译小用法
unity版本: 2022.3.14
管线:URP
相关官方文档: 官网文档链接

#pragma 是什么

当我们在 Unity 中写 Shader 时,大家对 #pragma 必然不陌生。#pragma 是一个预处理指令,一般用来为 shader 编译器提供额外的编译信息,例如:

#pragma 可以写在任何地方,我们一般为了便于管理,一般写在着色器的头部
#pragma 除了支持 HLSL 标准的定义外,unity 还做了专属的pragma扩展

小特性

可以写在 #if #endif 宏定义包裹内

判断条件必须满足以下标准

unity 专属的 pragma

必须写在 .shader 文件内,如果专属的 pragma 写在了 include 文件内,则需要使用 #include_with_pragmas 进行引用,否则编译器将忽略 include 文件内的 pragma 指令

Surface 着色器相关专属宏定义

#pragma surface <surface function> <lighting model> <optional parameters>

Shader stages

Shader 变体和关键字

GPU requirement 和 shader model

图形库API

其它 pragma 指令

标准 HLSL 的 pragma

指令只可以写在 include 文件内,如果写在了 .shader 文件内则 或则使用 #include_with_pragmas 进行了引用,则编译器会忽略这些标准的编译指令

标准的 pragma 有以下几个

上一篇 下一篇

猜你喜欢

热点阅读