// DFVolume - Distance field volume generator for Unity // https://github.com/keijiro/DFVolume using System.Collections.Generic; using UnityEngine; namespace DFVolume { public class VolumeData : ScriptableObject { #region Exposed attributes [SerializeField] Texture3D _texture; public Texture3D texture { get { return _texture; } } List _data; public List data { get { return _data; } } #endregion #if UNITY_EDITOR #region Editor functions public void Initialize(VolumeSampler sampler) { var bmp = sampler.GenerateBitmap(); var dim = sampler.resolution; _texture = new Texture3D(dim, dim, dim, TextureFormat.RGBAHalf, true); _texture.name = "Distance Field Texture"; _texture.filterMode = FilterMode.Bilinear; _texture.wrapMode = TextureWrapMode.Clamp; _texture.SetPixels(bmp); _texture.Apply(); _data = new List(); foreach (var c in bmp) _data.Add(new Vector4(c.r, c.g, c.b, c.a)); } #endregion #endif } }