private void AddSceneStreaming(VirtualMaterial vm, int clusterCount)
    {
        foreach (var s in res.clusterProperties)
        {
            if (s.name == sceneName)
            {
                res.clusterProperties.Remove(s);
                break;
            }
        }

        SceneStreaming ss = new SceneStreaming();

        ss.name         = sceneName;
        ss.vm           = vm;
        ss.clusterCount = clusterCount;

        res.clusterProperties.Add(ss);
    }
示例#2
0
    public void LoadScene(string name)
    {
        ClusterResources res = _asset.res;
        SceneStreaming   ss  = res.GetSceneStreaming(name);

        if (ss == null)
        {
            Debug.LogError("没有取到场景资源,请检查ClusterMatResource");
        }
        VirtualMaterial vm = ss.vm;

        _properties       = vm.allProperties.ToArray();
        _perprotiesBuffer = new ComputeBuffer(_properties.Length, sizeof(MaterialProperties));
        _perprotiesBuffer.SetData(_properties);

        for (int i = 0; i < vm.albedoIDs.Count; i++)
        {
            string  texPath = "Scenes/" + name + ClusterComponents.PATH_TEX + vm.albedoNames[i];
            Texture texture = ResourceManager.instance.Load <Texture>(texPath);
            Shader.SetGlobalTexture(vm.albedoIDs[i].ToString(), texture);
        }
    }
    public int GetClusterCount(string name)
    {
        SceneStreaming ss = GetSceneStreaming(name);

        return(ss.clusterCount);
    }