示例#1
0
        public override bool Calculate()
        {
            Debug.Log("calc");
            if (!allInputsReady())
            {
                //Debug.LogError(" input no ready");
                return(false);
            }
            if (Outputs == null || Outputs.Count == 0)
            {
                Debug.LogError(" null Outputs in " + this);
                return(false);
            }
            if (m_Wrapping)
            {
                m_Value6.Floor(); // = (FloatRemap)Mathf.Floor(m_Value6);
                m_Value5.Floor(); // = (FloatRemap)Mathf.Floor(m_Value5);
            }
            if (m_Param == null)
            {
                m_Param = new TextureParam(m_TexWidth, m_TexHeight);
            }
            if (m_perlin == null || m_perlin.GetPermutationTable1D() == null || m_perlin.GetGradient2D() == null)
            {
                m_perlin = new ImprovedPerlinNoise(m_seed);
                m_perlin.LoadResourcesFor2DNoise();
            }


            if (m_Param != null)
            {
                switch (m_OpType)
                {
                case TexOP.PerlinBm:
                    General(m_Value1, m_Value2, m_Value3, m_Param, ShaderOp.PerlinBm);
                    break;

                case TexOP.PerlinTurb:
                    General(m_Value1, m_Value2, m_Value3, m_Param, ShaderOp.PerlinTurb);
                    break;

                case TexOP.PerlinRidge:
                    General(m_Value1, m_Value2, m_Value3, m_Param, ShaderOp.PerlinRidge);
                    break;

                case TexOP.VeroniNoise:
                    General(m_Value1, m_Value2, m_Value3, m_Param, ShaderOp.VeroniNoise);
                    break;

                case TexOP.Simplex3D:
                    General(m_Value1, m_Value2, m_Value3, m_Param, ShaderOp.Simplex3D);
                    break;
                }
            }
            //m_Cached = m_Param.GetHWSourceTexture();
            CreateCachedTextureIcon();
            Outputs[0].SetValue <TextureParam> (m_Param);
            CheckDiskIcon(name, m_Param);
            return(true);
        }
示例#2
0
    void Start()
    {
        m_perlin = new ImprovedPerlinNoise(m_seed);

        m_perlin.LoadResourcesFor2DNoise();

        GetComponent <Renderer>().material.SetTexture("_PermTable1D", m_perlin.GetPermutationTable1D());
        GetComponent <Renderer>().material.SetTexture("_Gradient2D", m_perlin.GetGradient2D());
    }
    // Use this for initialization
    void Start()
    {
        twoPowDimensionWidth = (int)Mathf.Pow(2, powerOfTwoSize);
        m_perlin             = new ImprovedPerlinNoise(m_seed);

        m_perlin.LoadResourcesFor2DNoise();
        compShade.SetTexture(compShade.FindKernel("CSProcGen"), "_Gradient2D", m_perlin.GetGradient2D());
        compShade.SetTexture(compShade.FindKernel("CSProcGen"), "_PermTable1D", m_perlin.GetPermutationTable1D());


        buffer[READ]  = new ComputeBuffer(twoPowDimensionWidth * twoPowDimensionWidth, sizeof(float), ComputeBufferType.Default);
        buffer[WRITE] = new ComputeBuffer(twoPowDimensionWidth * twoPowDimensionWidth, sizeof(float), ComputeBufferType.Default);
    }
示例#4
0
    void Start()
    {
        m_waterDamping    = Mathf.Clamp01(m_waterDamping);
        m_regolithDamping = Mathf.Clamp01(m_regolithDamping);

        float u = 1.0f / (float)TEX_SIZE;

        m_rectLeft  = new Rect(0.0f, 0.0f, u, 1.0f);
        m_rectRight = new Rect(1.0f - u, 0.0f, u, 1.0f);

        m_rectBottom = new Rect(0.0f, 0.0f, 1.0f, u);
        m_rectTop    = new Rect(0.0f, 1.0f - u, 1.0f, u);

        m_terrainField    = new RenderTexture[2];
        m_waterOutFlow    = new RenderTexture[2];
        m_waterVelocity   = new RenderTexture[2];
        m_advectSediment  = new RenderTexture[2];
        m_waterField      = new RenderTexture[2];
        m_sedimentField   = new RenderTexture[2];
        m_regolithField   = new RenderTexture[2];
        m_regolithOutFlow = new RenderTexture[2];
        m_lavaField       = new RenderTexture[2];
        m_lavaVelocity    = new RenderTexture[2];
        m_lavaOutFlow     = new RenderTexture[2];

        m_terrainField[0] = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBFloat);
        m_terrainField[0].enableRandomWrite = true;
        m_terrainField[0].wrapMode          = TextureWrapMode.Clamp;
        m_terrainField[0].filterMode        = FilterMode.Point;
        m_terrainField[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBFloat);
        m_terrainField[1].wrapMode   = TextureWrapMode.Clamp;
        m_terrainField[1].filterMode = FilterMode.Point;

        m_waterOutFlow[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBHalf);
        m_waterOutFlow[0].wrapMode   = TextureWrapMode.Clamp;
        m_waterOutFlow[0].filterMode = FilterMode.Point;
        m_waterOutFlow[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBHalf);
        m_waterOutFlow[1].wrapMode   = TextureWrapMode.Clamp;
        m_waterOutFlow[1].filterMode = FilterMode.Point;

        m_lavaOutFlow[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBHalf);
        m_lavaOutFlow[0].wrapMode   = TextureWrapMode.Clamp;
        m_lavaOutFlow[0].filterMode = FilterMode.Point;
        m_lavaOutFlow[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBHalf);
        m_lavaOutFlow[1].wrapMode   = TextureWrapMode.Clamp;
        m_lavaOutFlow[1].filterMode = FilterMode.Point;

        m_waterVelocity[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RGHalf);
        m_waterVelocity[0].wrapMode   = TextureWrapMode.Clamp;
        m_waterVelocity[0].filterMode = FilterMode.Bilinear;
        m_waterVelocity[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RGHalf);
        m_waterVelocity[1].wrapMode   = TextureWrapMode.Clamp;
        m_waterVelocity[1].filterMode = FilterMode.Bilinear;

        m_lavaVelocity[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RGHalf);
        m_lavaVelocity[0].wrapMode   = TextureWrapMode.Clamp;
        m_lavaVelocity[0].filterMode = FilterMode.Bilinear;
        m_lavaVelocity[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RGHalf);
        m_lavaVelocity[1].wrapMode   = TextureWrapMode.Clamp;
        m_lavaVelocity[1].filterMode = FilterMode.Bilinear;

        m_waterField[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RFloat);
        m_waterField[0].wrapMode   = TextureWrapMode.Clamp;
        m_waterField[0].filterMode = FilterMode.Point;
        m_waterField[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RFloat);
        m_waterField[1].wrapMode   = TextureWrapMode.Clamp;
        m_waterField[1].filterMode = FilterMode.Point;

        m_lavaField[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RFloat);
        m_lavaField[0].wrapMode   = TextureWrapMode.Clamp;
        m_lavaField[0].filterMode = FilterMode.Point;
        m_lavaField[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RFloat);
        m_lavaField[1].wrapMode   = TextureWrapMode.Clamp;
        m_lavaField[1].filterMode = FilterMode.Point;

        m_regolithField[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RFloat);
        m_regolithField[0].wrapMode   = TextureWrapMode.Clamp;
        m_regolithField[0].filterMode = FilterMode.Point;
        m_regolithField[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RFloat);
        m_regolithField[1].wrapMode   = TextureWrapMode.Clamp;
        m_regolithField[1].filterMode = FilterMode.Point;

        m_regolithOutFlow[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBHalf);
        m_regolithOutFlow[0].wrapMode   = TextureWrapMode.Clamp;
        m_regolithOutFlow[0].filterMode = FilterMode.Point;
        m_regolithOutFlow[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBHalf);
        m_regolithOutFlow[1].wrapMode   = TextureWrapMode.Clamp;
        m_regolithOutFlow[1].filterMode = FilterMode.Point;

        m_sedimentField[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RHalf);
        m_sedimentField[0].wrapMode   = TextureWrapMode.Clamp;
        m_sedimentField[0].filterMode = FilterMode.Bilinear;
        m_sedimentField[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RHalf);
        m_sedimentField[1].wrapMode   = TextureWrapMode.Clamp;
        m_sedimentField[1].filterMode = FilterMode.Bilinear;

        m_advectSediment[0]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RHalf);
        m_advectSediment[0].wrapMode   = TextureWrapMode.Clamp;
        m_advectSediment[0].filterMode = FilterMode.Bilinear;
        m_advectSediment[1]            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RHalf);
        m_advectSediment[1].wrapMode   = TextureWrapMode.Clamp;
        m_advectSediment[1].filterMode = FilterMode.Bilinear;

        m_tiltAngle            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RHalf);
        m_tiltAngle.wrapMode   = TextureWrapMode.Clamp;
        m_tiltAngle.filterMode = FilterMode.Point;

        m_slippageHeight            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.RHalf);
        m_slippageHeight.wrapMode   = TextureWrapMode.Clamp;
        m_slippageHeight.filterMode = FilterMode.Point;

        m_slippageOutflow            = new RenderTexture(TEX_SIZE, TEX_SIZE, 0, RenderTextureFormat.ARGBHalf);
        m_slippageOutflow.wrapMode   = TextureWrapMode.Clamp;
        m_slippageOutflow.filterMode = FilterMode.Point;

        m_perlin = new ImprovedPerlinNoise(m_seed);
        m_perlin.LoadResourcesFor2DNoise();

        MakeGrids();
    }