BuildSettings
структура в UnityEngine.Rendering
Выполнено в:UnityEngine.CoreModule
Описание
Содержит параметры для создания RayTracingAccelerationStructure.
Эта структура объединяет параметры для CommandBuffer.BuildRayTracingAccelerationStructure и RayTracingAccelerationStructure.Build методы. Используйте различные параметры для управления или оптимизации того, как Unity строит структуру ускорения.
using UnityEngine; using UnityEngine.Rendering;
public class RayTracingManager : MonoBehaviour { // References to renderers that will be ray traced public Renderer[] sceneRenderers;
private RayTracingAccelerationStructure rtas; private bool isInitialized = false;
void Start() { InitializeRayTracing(); }
void OnDestroy() { // Clean up acceleration structure if (rtas != null) { rtas.Dispose(); rtas = null; } }
void Update() { if (!isInitialized || rtas == null) return;
// Rebuild acceleration structure each frame to handle dynamic objects UpdateAccelerationStructure(); }
private void BuildAccelerationStructure() { if (Camera.main == null) return;
var buildSettings = new RayTracingAccelerationStructure.BuildSettings( // Build the acceleration structure for maximum ray tracing performance... RayTracingAccelerationStructureBuildFlags.PreferFastTrace, // ...and with camera-relative ray tracing. Camera.main.transform.position );
rtas.Build(buildSettings); }
private void InitializeRayTracing() { if (sceneRenderers == null || sceneRenderers.Length == 0) { Debug.LogError("ERROR: No renderers assigned for ray tracing."); return; }
// Create acceleration structure rtas = new RayTracingAccelerationStructure();
// Configure submesh flags RayTracingSubMeshFlags[] subMeshFlags = new RayTracingSubMeshFlags[1]; subMeshFlags[0] = RayTracingSubMeshFlags.Enabled | RayTracingSubMeshFlags.ClosestHitOnly;
// Add all renderers to acceleration structure foreach (var renderer in sceneRenderers) { if (renderer != null) { rtas.AddInstance( renderer, // Renderer to add subMeshFlags, // Hit shader setup true, // Disable triangle culling false, // Consider front triangles as clockwise relative to the ray direction 0xff, // Instance mask (all bits set) 0 // Layer value ); } }
// Perform initial build BuildAccelerationStructure(); isInitialized = true; }
private void UpdateAccelerationStructure() { // Update transform of all instances foreach (var renderer in sceneRenderers) { if (renderer != null) { rtas.UpdateInstanceTransform(renderer); } }
// Rebuild the structure BuildAccelerationStructure(); } }
Дополнительные ресурсы:: Build, CommandBuffer.BuildRayTracingAccelerationStructure.
Свойства
| Свойство | Описание |
|---|---|
| buildFlags | Флаги сборки Unity используются для сборки RayTracingAccelerationStructure. |
| relativeOrigin | Относительное происхождение экземпляров трассирования лучей. |