top of page

serie

Multi Point

2022

"Et si nous étions simplement une multitude de points dans une dimension zéro ? "

Multi Point

2022

Et si nous étions simplement une multitude de points dans une dimension zéro ? "

 

Une idée qui peut sembler choquante, mais qui est en réalité une possibilité fascinante à explorer. Dans cette hypothèse, nous serions tous des points - des singularités infiniment petites - flottant dans un océan de vide quantique. Nous ne serions pas des entités séparées, mais plutôt une partie intégrante de l’univers dans lequel nous vivons. Nous serions connectés les uns aux autres par un réseau invisible de particules et d’énergie, unis dans notre existence dans cette dimension zéro. Cela peut sembler étrange et déroutant, mais il y a une beauté à cette idée. Elle implique que nous ne sommes pas isolés ou seuls dans l’univers - au contraire, nous faisons tous partie d’un tout plus grand. Nous sommes tous liés par des forces invisibles qui nous connectent à chaque instant, créant une toile complexe de relations et de connexions. Et cela soulève une question fascinante : si nous sommes tous des points dans une dimension zéro, que se passe-t-il lorsque nous sommes rassemblés ? Quelle est la nature de cette interaction ? Comment cela affecte-t-il notre perception de nous-mêmes et de l’univers qui nous entoure ? Ce sont des questions difficiles à répondre, mais elles sont passionnantes à explorer. Elles nous invitent à repenser notre relation à l’univers et aux autres et à envisager notre existence sous un angle différent. Et qui sait ? Peut-être que cette hypothèse nous révèlera de nouveaux aspects de l’univers et de nous-mêmes, nous incitant à explorer encore plus profondément les mystères de la vie et de l’univers. Dans l’univers fascinant de la dimension zéro, où les multivers s’entrelacent et où les phénomènes quantiques se manifestent de manière mystérieuse et enchanteresse, c’est ici, dans cette réalité infiniment petite, que se cachent les secrets les plus profonds de l’univers. Les multivers « Multipoints»sont des univers parallèles qui coexistent avec le nôtre, chacun avec ses propres lois physiques et ses propres réalités. C’est une idée incroyablement captivante, qui suscite l’imagination et nous invite à explorer des mondes inconnus. Et c’est dans cette exploration que nous découvrons la magie de la dimension zéro. Car c’est ici, dans cette dimension infiniment petite, que se cachent les particules quantiques - des entités étranges et merveilleuses qui défient les lois de la physique classique. Les particules quantiques peuvent exister simultanément dans plusieurs états, et leur comportement est indéterminé jusqu’à ce qu’une mesure soit effectuée. C’est ce mystère quantique qui rend la dimension zéro si fascinante. Je suis fasciné par la théorie quantique - l’évolution constante qui nous conduit vers de nouveaux horizons. Et c’est dans la dimension zéro que cette transformation atteint son paroxysme, où la matière et l’énergie se transforment en un flux de possibilités infinies. C’est pourquoi j’ai créé une unité de point - une expression de l’infinité de la dimension zéro, transformée en un espace immersif."

CODE

**** 
// Travail original (santisar) Copyright (C) 2022 santiago torres

// Description : code multi points 

// Auteur : santiago torres.

// Dernière modif : 20220321

// Licence : Copyright (C) 2022 santiago torres. Tous droits réservés.
// -------------------- ----- ------ -------- -------- ------- ------

using UnityEngine;

namespace Pcx
{
    /// A renderer class that renders a point cloud contained by PointCloudData.
    [ExecuteInEditMode]
    public sealed class PointCloudRenderer : MonoBehaviour
    {
        #region Editable attributes

        [SerializeField] PointCloudData _sourceData = null;

        public PointCloudData sourceData {
            get { return _sourceData; }
            set { _sourceData = value; }
        }

        [SerializeField] Color _pointTint = new Color(0.5f, 0.5f, 0.5f, 1);

        public Color pointTint {
            get { return _pointTint; }
            set { _pointTint = value; }
        }

        [SerializeField] float _pointSize = 0.05f;

        public float pointSize {
            get { return _pointSize; }
            set { _pointSize = value; }
        }

        #endregion

        #region Public properties (nonserialized)

        public ComputeBuffer sourceBuffer { get; set; }

        #endregion

        #region Internal resources

        [SerializeField, HideInInspector] Shader _pointShader = null;
        [SerializeField, HideInInspector] Shader _diskShader = null;

        #endregion

        #region Private objects

        Material _pointMaterial;
        Material _diskMaterial;

        #endregion

        #region MonoBehaviour implementation

        void OnValidate()
        {
            _pointSize = Mathf.Max(0, _pointSize);
        }

        void OnDestroy()
        {
            if (_pointMaterial != null)
            {
                if (Application.isPlaying)
                {
                    Destroy(_pointMaterial);
                    Destroy(_diskMaterial);
                }
                else
                {
                    DestroyImmediate(_pointMaterial);
                    DestroyImmediate(_diskMaterial);
                }
            }
        }

        void OnRenderObject()
        {
            // We need a source data or an externally given buffer.
            if (_sourceData == null && sourceBuffer == null) return;

            // Check the camera condition.
            var camera = Camera.current;
            if ((camera.cullingMask & (1 << gameObject.layer)) == 0) return;
            if (camera.name == "Preview Scene Camera") return;

            // TODO: Do view frustum culling here.

            // Lazy initialization
            if (_pointMaterial == null)
            {
                _pointMaterial = new Material(_pointShader);
                _pointMaterial.hideFlags = HideFlags.DontSave;
                _pointMaterial.EnableKeyword("_COMPUTE_BUFFER");

                _diskMaterial = new Material(_diskShader);
                _diskMaterial.hideFlags = HideFlags.DontSave;
                _diskMaterial.EnableKeyword("_COMPUTE_BUFFER");
            }

            // Use the external buffer if given any.
            var pointBuffer = sourceBuffer != null ?
                sourceBuffer : _sourceData.computeBuffer;

            if (_pointSize == 0)
            {
                _pointMaterial.SetPass(0);
                _pointMaterial.SetColor("_Tint", _pointTint);
                _pointMaterial.SetMatrix("_Transform", transform.localToWorldMatrix);
                _pointMaterial.SetBuffer("_PointBuffer", pointBuffer);
                #if UNITY_2019_1_OR_NEWER
                Graphics.DrawProceduralNow(MeshTopology.Points, pointBuffer.count, 1);
                #else
                Graphics.DrawProcedural(MeshTopology.Points, pointBuffer.count, 1);
                #endif
            }
            else
            {
                _diskMaterial.SetPass(0);
                _diskMaterial.SetColor("_Tint", _pointTint);
                _diskMaterial.SetMatrix("_Transform", transform.localToWorldMatrix);
                _diskMaterial.SetBuffer("_PointBuffer", pointBuffer);
                _diskMaterial.SetFloat("_PointSize", pointSize);
                #if UNITY_2019_1_OR_NEWER
                Graphics.DrawProceduralNow(MeshTopology.Points, pointBuffer.count, 1);
                #else
                Graphics.DrawProcedural(MeshTopology.Points, pointBuffer.count, 1);
                #endif
            }
        }

        #endregion
    }
}

 

bottom of page