예제 #1
0
 public CachedShaderBufferInjector(ShaderBufferSE shaderBuffer, int strideInFloats, Func <bool> isEnabledFunc, string bufferName, bool automaticReset, string objectName, EditorUpdate2GO editorUpdate2Go, Material material)
     : base(automaticReset, bufferName, objectName, editorUpdate2Go, material)
 {
     _shaderBuffer   = shaderBuffer;
     _strideInFloats = strideInFloats;
     _isEnabledFunc  = isEnabledFunc;
     UpdateVariables();
 }
예제 #2
0
        public override ComputeBuffer ProvideBuffer(bool forceReload)
        {
            if (ShaderBuffer != _lastShaderBufferSe || forceReload)
            {
                _lastShaderBufferSe = ShaderBuffer;
                _lastProviderBuffer?.Release();
                _lastProviderBuffer?.Dispose();

                //ShaderBuffer.Data = Enumerable.Range(0, ShaderBuffer.Data.Length).Select(c => 1f).ToArray();
                _lastProviderBuffer = new ComputeBuffer(ShaderBuffer.Data.Length / StrideInFloats, sizeof(float) * StrideInFloats, ComputeBufferType.Default);

                _lastProviderBuffer.SetData(_lastShaderBufferSe.Data);
            }
            return(_lastProviderBuffer);
        }
        private ShaderBufferSE RetriveShaderBuffer(MyShaderBufferType type)
        {
            ShaderBufferSE shaderBuffer = null;

            var bufferAssetName = $"{BaseName}.{type.Details().BufferFileSuffix}";

            if (Application.isEditor)
            {
                var path = $"Assets/NPRResources/BuffersCache/{bufferAssetName}.asset";
                shaderBuffer = MyAssetDatabase.LoadAssetAtPath <ShaderBufferSE>(path);
                Preconditions.Assert(shaderBuffer != null, $"Cannot find buffer of path " + path);
            }
            else
            {
                var listing = FindObjectOfType <MyBufferCacheAssetListingGO>();
                Preconditions.Assert(listing != null, "Cannot find object of type MyBufferCacheAssetListingGO");
                shaderBuffer = listing.RetriveAssetOfName(bufferAssetName) as ShaderBufferSE;
                Preconditions.Assert(shaderBuffer != null, $"Cannot find buffer of  name " + bufferAssetName);
            }

            return(shaderBuffer);
        }