Exemple #1
0
        private void UpdateDebugTexture()
        {
            if (m_LookupTexture == null || m_DebugShader == null)
            {
                return;
            }

            if (m_DebugMaterial == null)
            {
                m_DebugMaterial = new Material(m_DebugShader);
            }

            DebugTexture.DiscardContents();
            Graphics.Blit(m_LookupTexture, DebugTexture, m_DebugMaterial);
        }
Exemple #2
0
    void Update()
    {
        UpdateComputeShaderSettings();

        if (activeTexture != lastActiveTexture)
        {
            lastActiveTexture = activeTexture;
            UpdateActiveTexture();
        }

        if (simulate)
        {
            ComputeVelocityAdvection();
            Swap(ref velocityTex, ref velocityOutTex);

            Project();

            Viscosity();

            ComputeDensityAdvection();
            Swap(ref densityTex, ref densityOutTex);

            Diffusion();

            ComputeTemperatureAdvection();
            Swap(ref temperatureTex, ref temperatureOutTex);

            ComputeForces();
            Swap(ref velocityTex, ref velocityOutTex);
        }

        CheckForMouse();

        if (trackedObject != null)
        {
            ImpulseFromTrackedObject();
        }

        // Delay to puff

        if (trackedSpline != null && trackedSplineTime < Time.realtimeSinceStartup - startTime)
        {
            ImpulseFromTrackedSpline();
            trackedSplineTime = Time.realtimeSinceStartup - startTime + 0.05f;
        }
    }