public Material MakeMaterial(int size, Vector2 pos, MeshRenderer renderer) { Material _material = new Material(_shader); Texture2D noiseTex = new Texture2D(size, size, TextureFormat.RGBA32, false); noiseTex.wrapMode = TextureWrapMode.Clamp; var colour = noiseTex.GetRawTextureData(); Color[] colorMap = new Color[1]; Task.Run(() => { try { colorMap = new Color[size * size]; float[][,] noises = new float[LAYER_COUNT][, ]; for (int i = 0; i < LAYER_COUNT; i++) { if (_layers[i].GetNoise != null) { noises[i] = Noise.GenerateNoiseMap(size, size, _noiseDetailLevel, _layers[i].GetNoise.NoiseSettingsDataMerge, pos); noises[i] = Noise.Clamp(noises[i], _layers[i].GetNoise); } else { noises[i] = new float[size, size]; } } float f = 0; int a = 0, b = 0; int aa = 0; int bb = 0; //byte[] noiseByte = new byte[size * size]; for (int y = 0; y < size; y++) { for (int x = 0; x < size; x++) { float large = Math.Max(noises[0][x, y], noises[1][x, y]); large = Math.Max(large, noises[2][x, y]); if (large > f) { f = large; aa = x; bb = y; } //ThreadedDataRequester.AddToCallbackQueue(() => { Debug.Log(noises[1][x, y]); }); // colour[y * size + x] = (byte)(255 * noise[x, y]); colorMap[y * size + x].r = noises[0][x, y]; colorMap[y * size + x].g = noises[1][x, y]; colorMap[y * size + x].b = noises[2][x, y]; colorMap[y * size + x].a = noises[3][x, y]; } } //colour = noiseByte; //Debug.Log(noiseByte[1]); ThreadedDataRequester.AddToCallbackQueue(() => { //noiseTex.LoadRawTextureData(colour); noiseTex.SetPixels(colorMap); noiseTex.Apply(); //MaterialPropertyBlock prop = new MaterialPropertyBlock(); //prop.SetTexture("_NoiseTextures", noiseTex); //renderer.SetPropertyBlock(prop); _material.SetTexture("_NoiseTexture", noiseTex); }); } catch (Exception e) { Debug.LogError(e); } }); _material.SetTexture("_AltTex0", _layers[0].GetTexture); _material.SetTexture("_AltTex1", _layers[1].GetTexture); _material.SetTexture("_AltTex2", _layers[2].GetTexture); _material.SetTexture("_AltTex3", _layers[3].GetTexture); _material.SetTexture("_MainTex", _mainTex); _material.SetTexture("_Emission", _emission); _material.SetFloat("baseTextureScale", _mainTexScale); _material.SetFloatArray("startStep", _layers.Select(x => x.GetStepValues.startStep).ToArray()); _material.SetFloatArray("endStep", _layers.Select(x => x.GetStepValues.endStep).ToArray()); _material.SetFloatArray("altTextureScale", _layers.Select(x => x.GetTextureScale).ToArray()); _material.SetColorArray("altTextureColour", _layers.Select(x => x.GetColour).ToArray()); _material.SetFloat("mainTexStop", _mainTexStop); _material.SetFloat("mainTexStart", _mainTexStart); return(_material); }