示例#1
0
 public ProbeArray(ProbeArray probeArray)
 {
     mProbeArray = API.iplProbeArrayRetain(probeArray.mProbeArray);
 }
 public void Save(SerializedData dataAsset)
 {
     var serializedObject = new SerializedObject(mContext);
     API.iplStaticMeshSave(mStaticMesh, serializedObject.Get());
     serializedObject.WriteToFile(dataAsset);
 }
 public override void Destroy()
 {
     API.iplFMODTerminate();
 }
示例#4
0
        public void Release()
        {
            API.iplProbeBatchRelease(ref mProbeBatch);

            mContext = null;
        }
 public void RemoveFromScene(Scene scene)
 {
     API.iplStaticMeshRemove(mStaticMesh, scene.Get());
     scene.NotifyRemoveObject();
 }
示例#6
0
 public int GetNumProbes()
 {
     return(API.iplProbeArrayGetNumProbes(mProbeArray));
 }
示例#7
0
        public ProbeBatch(Context context)
        {
            mContext = context;

            API.iplProbeBatchCreate(context.Get(), out mProbeBatch);
        }
示例#8
0
 public SerializedObject(SerializedObject serializedObject)
 {
     mSerializedObject = API.iplSerializedObjectRetain(serializedObject.Get());
 }
示例#9
0
 public UIntPtr GetSize()
 {
     return(API.iplSerializedObjectGetSize(mSerializedObject));
 }
 public void SaveOBJ(string fileBaseName)
 {
     API.iplSceneSaveOBJ(mScene, fileBaseName);
 }
 public void Commit()
 {
     API.iplSceneCommit(mScene);
 }
        public Scene(Scene scene)
        {
            mContext = scene.mContext;

            mScene = API.iplSceneRetain(scene.mScene);
        }
 public override void SetReverbSource(Source reverbSource)
 {
     API.iplFMODSetReverbSource(reverbSource.Get());
 }
 public override void SetHRTF(IntPtr hrtf)
 {
     API.iplFMODSetHRTF(hrtf);
 }
示例#15
0
 public void Release()
 {
     API.iplProbeArrayRelease(ref mProbeArray);
 }
示例#16
0
 public IntPtr GetData()
 {
     return(API.iplSerializedObjectGetData(mSerializedObject));
 }
示例#17
0
 public void GenerateProbes(Scene scene, ProbeGenerationParams probeGenerationParams)
 {
     API.iplProbeArrayGenerateProbes(mProbeArray, scene.Get(), ref probeGenerationParams);
 }
示例#18
0
 public void AddProbeArray(ProbeArray probeArray)
 {
     API.iplProbeBatchAddProbeArray(mProbeBatch, probeArray.Get());
 }
示例#19
0
 public Sphere GetProbe(int index)
 {
     return(API.iplProbeArrayGetProbe(mProbeArray, index));
 }
示例#20
0
 public void Commit()
 {
     API.iplProbeBatchCommit(mProbeBatch);
 }
示例#21
0
        public ProbeBatch(ProbeBatch probeBatch)
        {
            mContext = probeBatch.mContext;

            mProbeBatch = API.iplProbeBatchRetain(probeBatch.mProbeBatch);
        }
示例#22
0
 public void RemoveData(BakedDataIdentifier identifier)
 {
     API.iplProbeBatchRemoveData(mProbeBatch, ref identifier);
 }
 public void AddToScene(Scene scene)
 {
     API.iplStaticMeshAdd(mStaticMesh, scene.Get());
     scene.NotifyAddObject();
 }
示例#24
0
 public UIntPtr GetDataSize(BakedDataIdentifier identifier)
 {
     return(API.iplProbeBatchGetDataSize(mProbeBatch, ref identifier));
 }
        public StaticMesh(StaticMesh staticMesh)
        {
            mContext = staticMesh.mContext;

            mStaticMesh = API.iplStaticMeshRetain(staticMesh.mStaticMesh);
        }
示例#26
0
 public ProbeArray(Context context)
 {
     API.iplProbeArrayCreate(context.Get(), out mProbeArray);
 }
        static void BakeThread()
        {
            sTotalObjects = sTasks.Length;

            for (var i = 0; i < sTotalObjects; ++i)
            {
                sCurrentObjectIndex = i;

                if (sTasks[i].identifier.type == BakedDataType.Pathing)
                {
                    sCurrentObjectName = "pathing";
                }
                else if (sTasks[i].identifier.variation == BakedDataVariation.Reverb)
                {
                    sCurrentObjectName = "reverb";
                }
                else
                {
                    sCurrentObjectName = sTasks[i].name;
                }

                Debug.Log(string.Format("START: Baking effect for {0}.", sCurrentObjectName));

                var probeBatches = sTasks[i].probeBatches;
                sTotalProbeBatches = probeBatches.Length;

                for (var j = 0; j < sTotalProbeBatches; ++j)
                {
                    sCurrentProbeBatchIndex = j;

                    if (sCancel)
                    {
                        return;
                    }

                    if (probeBatches[j] == null)
                    {
                        Debug.LogWarning(string.Format("{0}: Probe Batch at index {1} is null.", sCurrentObjectName, j));
                        continue;
                    }

                    if (probeBatches[j].GetNumProbes() == 0)
                    {
                        Debug.LogWarning(string.Format("{0}: Probe Batch {1} has no probes, skipping.", sCurrentObjectName, sTasks[i].probeBatchNames[j]));
                        continue;
                    }

                    var probeBatch = new ProbeBatch(SteamAudioManager.Context, sTasks[i].probeBatchAssets[j]);

                    var simulationSettings = SteamAudioManager.GetSimulationSettings(true);

                    if (sTasks[i].identifier.type == BakedDataType.Reflections)
                    {
                        var bakeParams = new ReflectionsBakeParams {
                        };
                        bakeParams.scene                 = SteamAudioManager.CurrentScene.Get();
                        bakeParams.probeBatch            = probeBatch.Get();
                        bakeParams.sceneType             = simulationSettings.sceneType;
                        bakeParams.identifier            = sTasks[i].identifier;
                        bakeParams.flags                 = 0;
                        bakeParams.numRays               = simulationSettings.maxNumRays;
                        bakeParams.numDiffuseSamples     = simulationSettings.numDiffuseSamples;
                        bakeParams.numBounces            = SteamAudioSettings.Singleton.bakingBounces;
                        bakeParams.simulatedDuration     = simulationSettings.maxDuration;
                        bakeParams.savedDuration         = simulationSettings.maxDuration;
                        bakeParams.order                 = simulationSettings.maxOrder;
                        bakeParams.numThreads            = simulationSettings.numThreads;
                        bakeParams.rayBatchSize          = simulationSettings.rayBatchSize;
                        bakeParams.irradianceMinDistance = SteamAudioSettings.Singleton.bakingIrradianceMinDistance;
                        bakeParams.bakeBatchSize         = 1;

                        if (SteamAudioSettings.Singleton.bakeConvolution)
                        {
                            bakeParams.flags = bakeParams.flags | ReflectionsBakeFlags.BakeConvolution;
                        }

                        if (SteamAudioSettings.Singleton.bakeParametric)
                        {
                            bakeParams.flags = bakeParams.flags | ReflectionsBakeFlags.BakeParametric;
                        }

                        if (simulationSettings.sceneType == SceneType.RadeonRays)
                        {
                            bakeParams.openCLDevice     = SteamAudioManager.OpenCLDevice;
                            bakeParams.radeonRaysDevice = SteamAudioManager.RadeonRaysDevice;
                            bakeParams.bakeBatchSize    = SteamAudioSettings.Singleton.bakingBatchSize;
                        }

                        API.iplReflectionsBakerBake(SteamAudioManager.Context.Get(), ref bakeParams, sProgressCallback, IntPtr.Zero);
                    }
                    else
                    {
                        var bakeParams = new PathBakeParams {
                        };
                        bakeParams.scene      = SteamAudioManager.CurrentScene.Get();
                        bakeParams.probeBatch = probeBatch.Get();
                        bakeParams.identifier = sTasks[i].identifier;
                        bakeParams.numSamples = SteamAudioSettings.Singleton.bakingVisibilitySamples;
                        bakeParams.radius     = SteamAudioSettings.Singleton.bakingVisibilityRadius;
                        bakeParams.threshold  = SteamAudioSettings.Singleton.bakingVisibilityThreshold;
                        bakeParams.visRange   = SteamAudioSettings.Singleton.bakingVisibilityRange;
                        bakeParams.pathRange  = SteamAudioSettings.Singleton.bakingPathRange;
                        bakeParams.numThreads = SteamAudioManager.Singleton.NumThreadsForCPUCorePercentage(SteamAudioSettings.Singleton.bakedPathingCPUCoresPercentage);

                        API.iplPathBakerBake(SteamAudioManager.Context.Get(), ref bakeParams, sProgressCallback, IntPtr.Zero);
                    }

                    if (sCancel)
                    {
                        Debug.Log("CANCELLED: Baking.");
                        return;
                    }

                    // Don't flush the writes to disk just yet, because we can only do it from the main thread.
                    probeBatches[j].probeDataSize = probeBatch.Save(sTasks[i].probeBatchAssets[j], false);

                    var dataSize = (int)probeBatch.GetDataSize(sTasks[i].identifier);
                    probeBatches[j].AddOrUpdateLayer(sTasks[i].gameObject, sTasks[i].identifier, dataSize);

                    if (sTasks[i].identifier.type == BakedDataType.Reflections)
                    {
                        switch (sTasks[i].identifier.variation)
                        {
                        case BakedDataVariation.Reverb:
                            (sTasks[i].component as SteamAudioListener).UpdateBakedDataStatistics();
                            break;

                        case BakedDataVariation.StaticSource:
                            (sTasks[i].component as SteamAudioBakedSource).UpdateBakedDataStatistics();
                            break;

                        case BakedDataVariation.StaticListener:
                            (sTasks[i].component as SteamAudioBakedListener).UpdateBakedDataStatistics();
                            break;
                        }
                    }
                }

                Debug.Log(string.Format("COMPLETED: Baking effect for {0}.", sCurrentObjectName));
            }

            sStatus = BakeStatus.Complete;
        }
 public override void Initialize(IntPtr context, IntPtr defaultHRTF, SimulationSettings simulationSettings)
 {
     API.iplFMODInitialize(context);
     API.iplFMODSetHRTF(defaultHRTF);
     API.iplFMODSetSimulationSettings(simulationSettings);
 }