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(); }
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); }