Exemple #1
0
    private void InitRaytracingAccelerationStructure()
    {
        RayTracingAccelerationStructure.RASSettings settings = new RayTracingAccelerationStructure.RASSettings();
        // include default layer, not lights
        settings.layerMask = -1;
        // enable automatic updates
        settings.managementMode = RayTracingAccelerationStructure.ManagementMode.Manual;
        // include all renderer types
        settings.rayTracingModeMask = RayTracingAccelerationStructure.RayTracingModeMask.Everything;

        _accelerationStructure = new RayTracingAccelerationStructure(settings);

        // collect all objects in scene and add them to raytracing scene
        Renderer[] renderers = FindObjectsOfType <Renderer>();
        foreach (Renderer r in renderers)
        {
            if (r.CompareTag("Light"))
            {
                // mask for lights is 0x10 (for shadow rays - dont want to check for intersection in some cases)
                _accelerationStructure.AddInstance(r, null, null, true, false, 0x10);
            }
            else
            {
                _accelerationStructure.AddInstance(r, null, null, true, false, 0x01);
            }
        }

        // build raytracing AS
        _accelerationStructure.Build();
    }
Exemple #2
0
    private void InitRaytracingAccelerationStructure()
    {
        RayTracingAccelerationStructure.RASSettings settings = new RayTracingAccelerationStructure.RASSettings();
        // include all layers
        settings.layerMask = ~0;
        // enable automatic updates
        settings.managementMode = RayTracingAccelerationStructure.ManagementMode.Automatic;
        // include all renderer types
        settings.rayTracingModeMask = RayTracingAccelerationStructure.RayTracingModeMask.Everything;

        _rtas = new RayTracingAccelerationStructure(settings);

        // not necessary in automatic mode
        // collect all objects in scene and add them to raytracing scene
        // Renderer[] renderers = FindObjectsOfType<Renderer>();
        // foreach(Renderer r in renderers)
        //  _rtas.AddInstance(r);

        // build raytracing scene
        _rtas.Build();

        // RTAS could also be the one from (internal)
        // HDRenderPipeline.RequestAccelerationStructure();
        // reset with
        // HDRenderPipeline.ResetPathTracing();
    }
 void Start()
 {
     if (!SystemInfo.supportsRayTracing)
     {
         Debug.Log("Ray Tracing not supported !");
     }
     _Camera        = GetComponent <Camera>();
     _RenderTarget0 = new RenderTexture(_Camera.pixelWidth, _Camera.pixelHeight, 0, RenderTextureFormat.ARGBFloat);
     _RenderTarget0.enableRandomWrite = true;
     _RenderTarget0.Create();
     _RenderTarget1 = new RenderTexture(_RenderTarget0);
     _RenderTarget2 = new RenderTexture(_RenderTarget0);
     RayTracingAccelerationStructure.RASSettings settings = new RayTracingAccelerationStructure.RASSettings();
     settings.layerMask          = ~0;
     settings.managementMode     = RayTracingAccelerationStructure.ManagementMode.Automatic;
     settings.rayTracingModeMask = RayTracingAccelerationStructure.RayTracingModeMask.Everything;
     _AccelerationStructure      = new RayTracingAccelerationStructure(settings);
     Renderer[] renderers = FindObjectsOfType <Renderer>();
     for (int i = 0; i < renderers.Length; i++)
     {
         Material[] materials = renderers[i].sharedMaterials;
         for (int j = 0; j < materials.Length; j++)
         {
             materials[j] = new Material(IndirectDiffuseShader);
         }
         renderers[i].sharedMaterials = materials;
         _AccelerationStructure.AddInstance(renderers[i]);
     }
     _AccelerationStructure.Build();
     PathTracingShader.SetAccelerationStructure("_AccelerationStructure", _AccelerationStructure);
     PathTracingShader.SetTexture("_RenderTarget", _RenderTarget0);
     PathTracingShader.SetShaderPass("PathTracingRTX");
     _Material = new Material(ProgressiveShader);
     Reset();
 }
Exemple #4
0
        private void InitRTMannager()
        {
            InfinityRenderPipelineAsset PipelineAsset = (InfinityRenderPipelineAsset)GraphicsSettings.currentRenderPipeline;

            if (TracingAccelerationStructure == null && PipelineAsset.EnableRayTracing == true)
            {
                RayTracingAccelerationStructure.RASSettings TracingAccelerationStructureSetting = new RayTracingAccelerationStructure.RASSettings(RayTracingAccelerationStructure.ManagementMode.Automatic, RayTracingAccelerationStructure.RayTracingModeMask.Everything, -1 ^ (1 << 9));
                TracingAccelerationStructure = new RayTracingAccelerationStructure(TracingAccelerationStructureSetting);
                TracingAccelerationStructure.Build();//
            }
        }
    private void CreateAccelerationStructure()
    {
        if (_rtAccStructure == null)
        {
            var settings = new RayTracingAccelerationStructure.RASSettings();
            settings.layerMask          = rtLayerMask;
            settings.managementMode     = RayTracingAccelerationStructure.ManagementMode.Automatic;
            settings.rayTracingModeMask = rtModeMask;

            _rtAccStructure = new RayTracingAccelerationStructure(settings);
        }
    }
    private void CreateRayTracingAccelerationStructure()
    {
        if (rayTracingAccelerationStructure == null)
        {
            RayTracingAccelerationStructure.RASSettings settings = new RayTracingAccelerationStructure.RASSettings();
            settings.rayTracingModeMask = RayTracingAccelerationStructure.RayTracingModeMask.Everything;
            settings.managementMode     = RayTracingAccelerationStructure.ManagementMode.Automatic;
            settings.layerMask          = 255;

            rayTracingAccelerationStructure = new RayTracingAccelerationStructure(settings);
        }
    }
    void CreateRTAS()
    {
        RayTracingAccelerationStructure.RASSettings settings = new RayTracingAccelerationStructure.RASSettings();

        settings.layerMask = ~0;

        settings.managementMode = RayTracingAccelerationStructure.ManagementMode.Automatic;

        settings.rayTracingModeMask = RayTracingAccelerationStructure.RayTracingModeMask.Everything;



        _RTAS = new RayTracingAccelerationStructure(settings);

        renderers = FindObjectsOfType <Renderer>();
        for (int i = 0; i < renderers.Length; i++)
        {
            _RTAS.AddInstance(renderers[i]);
        }
        _RTAS.Build();
    }
    private void InitRaytracingAccelerationStructure()
    {
        RayTracingAccelerationStructure.RASSettings settings = new RayTracingAccelerationStructure.RASSettings();
        // include all layers
        settings.layerMask = ~0;
        // enable automatic updates
        settings.managementMode = RayTracingAccelerationStructure.ManagementMode.Automatic;
        // include all renderer types
        settings.rayTracingModeMask = RayTracingAccelerationStructure.RayTracingModeMask.Everything;

        _rtas = new RayTracingAccelerationStructure(settings);

        // collect all objects in scene and add them to raytracing scene
        Renderer[] renderers = FindObjectsOfType <Renderer>();
        foreach (Renderer r in renderers)
        {
            _rtas.AddInstance(r);
        }

        // build raytrasing scene
        _rtas.Build();
    }