public override FLBuffer GetBuffer() { LazyLoadingFLBuffer info = new LazyLoadingFLBuffer(root => { Bitmap bmp; WFCOverlayMode wfc = new WFCOverlayMode(Parameter.SourceImage.Bitmap, Parameter.N, Parameter.Width, Parameter.Height, Parameter.PeriodicInput, Parameter.PeriodicOutput, Parameter.Symmetry, Parameter.Ground); if (Parameter.Force) { do { wfc.Run(Parameter.Limit); bmp = new Bitmap(wfc.Graphics(), new Size(root.Dimensions.x, root.Dimensions.y)); //Apply scaling } while (!wfc.Success); } else { wfc.Run(Parameter.Limit); bmp = new Bitmap(wfc.Graphics(), new Size(root.Dimensions.x, root.Dimensions.y)); //Apply scaling } return(new FLBuffer(root.Instance, bmp, "WFCBuffer." + Name)); }); return(info); }
public static FLBuffer ComputeUrnd(bool isArray, int size, bool initializeOnStart) { LazyLoadingFLBuffer info = null; if (!isArray) { info = new LazyLoadingFLBuffer( root => { FLBuffer buf = new FLBuffer( root.Instance, CLAPI.CreateRandom( root.InputSize, new byte[] { 1, 1, 1, 1 }, RandomInstructionHelper .Randombytesource, true ), root.Dimensions.x, root.Dimensions.y, root.Dimensions.z, "RandomBuffer" ); buf.SetRoot(root); return(buf); }, initializeOnStart ); } else { info = new LazyLoadingFLBuffer( root => { FLBuffer buf = new FLBuffer( root.Instance, CLAPI.CreateRandom( size, new byte[] { 1, 1, 1, 1 }, RandomInstructionHelper .Randombytesource, true ), size, 1, 1, "RandomBuffer" ); buf.SetRoot(root); return(buf); }, initializeOnStart ); } return(info); }
public static FLBuffer ComputeRnd() { LazyLoadingFLBuffer info = new LazyLoadingFLBuffer(root => { FLBuffer buf = new FLBuffer(root.Instance, CLAPI.CreateRandom(root.InputSize, new byte[] { 1, 1, 1, 1 }, RandomInstructionHelper.Randombytesource, false), root.Dimensions.x, root.Dimensions.y, "RandomBuffer"); buf.SetRoot(root); return(buf); }); return(info); }
public override object Process(object o) { SerializableFLProgram input = (SerializableFLProgram)o; Dictionary <string, SerializableExternalFLFunction> convertedFuncs = new Dictionary <string, SerializableExternalFLFunction>(); for (int i = input.ExternalFunctions.Count - 1; i >= 0; i--) { SerializableExternalFLFunction serializableExternalFlFunction = input.ExternalFunctions[i]; if (serializableExternalFlFunction.Modifiers.ComputeOnce) { string newName = "_cached_" + serializableExternalFlFunction.Name; convertedFuncs.Add(newName, serializableExternalFlFunction); input.ExternalFunctions.RemoveAt(i); LazyLoadingFLBuffer buf = new LazyLoadingFLBuffer( root => { FLProgram prog = serializableExternalFlFunction .ExternalProgram .Initialize( root.Instance, InstructionSet ); FLBuffer b = new FLBuffer( root.Instance, root.Dimensions.x, root.Dimensions.y, root.Dimensions.z, "CachedBuffer" + serializableExternalFlFunction .Name ); prog.Run(b, true); b = prog.GetActiveBuffer(true); prog.FreeResources(); return(b); }, serializableExternalFlFunction .Modifiers.InitializeOnStart ); input.DefinedBuffers.Add( new SerializableScriptBuffer( newName, new FLBufferModifiers( newName, new[] { FLKeywords .ReadOnlyBufferModifier } ), buf ) ); } } foreach (KeyValuePair <string, SerializableExternalFLFunction> staticFunction in convertedFuncs) { foreach (SerializableFLFunction serializableFlFunction in input.Functions) { foreach (SerializableFLInstruction serializableFlInstruction in serializableFlFunction.Instructions) { for (int i = 0; i < serializableFlInstruction.Arguments.Count; i++) { SerializableFLInstructionArgument arg = serializableFlInstruction.Arguments[i]; if (arg.Identifier == staticFunction.Value.Name) { serializableFlInstruction.Arguments[i] = new SerializeBufferArgument(staticFunction.Key); } } } } } return(input); }