Skip to main content

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。

参见 Shader.PropertyToID。

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 公开了一些特殊的全局着色器变量,你可以在任何自定义化身或世界着色器中使用。它们在此处列出。