VRCGraphics
Udon 可以访问 Unity 的各种图形函数。
类型
VRCShader
全局着色器设置器的总类。更多信息请参见下面记录的函数。
VRCGraphics
公开 Unity 内置 Graphics 类的子集。更多信息请参见记录的函数。
VRCCameraSettings 和 VRCQualitySettings
提供有关用户屏幕相机、手持相机和 Unity 全局质量设置的信息和有限控制。更多信息请参见 VRCCameraSettings。
公开函数
VRCGraphics.Blit()
使用着色器将源纹理复制到目标 RenderTexture。注意,不允许提供 null 目标。
参见 Graphics.Blit。
查看小地图示例了解如何使用 VRCGraphics.Blit()。

Meta Quest 例外情况
除非你执行以下操作,否则 VRCGraphics.Blit 在 Quest GPU 上无法工作:
对着色器添加 ZTest Always 或者 关闭目标 RenderTexture 的深度。
如果不这样做,操作将失败。
VRCGraphics.DrawMeshInstanced()
使用 GPU 实例化多次绘制同一网格。
参见 Graphics.DrawMeshInstanced。
VRCShader.PropertyToID()
使用 PropertyToID 基于着色器属性名称获取 ID。仅在初始化期间调用此函数一次,ID 可重复使用且不会更改,即使在不同材质和着色器之间也不会改变。
注意,属性名称必须以"_Udon"为前缀,或者是字面字符串"_AudioTexture",才能与 VRCShader.SetGlobal 一起使用,但无论是否如此,仍会返回 ID。
VRCShader.SetGlobal()
使用通过 PropertyToID 获取的 ID 作为键,并指定正确类型的值。该值将在此名称下在世界中的_所有_着色器(包括化身上的!)中可用。
可用变体:
- VRCShader.SetGlobalColor()
- VRCShader.SetGlobalFloat()
- VRCShader.SetGlobalFloatArray()
- VRCShader.SetGlobalInteger() — 目前仍将值设置为
float,由于 Unity 的 bug - VRCShader.SetGlobalMatrix()
- VRCShader.SetGlobalMatrixArray()
- VRCShader.SetGlobalTexture()
- VRCShader.SetGlobalVector()
- VRCShader.SetGlobalVectorArray()
额外的着色器全局变量
VRChat 公开了一些特殊的全局着色器变量,你可以在任何自定义化身或世界着色器中使用。它们在此处列出。