void LoadDefaultTextures() { lightMat = new Material.PBRLight(); if (defaultBlack == null) { FloatBitmap black = new FloatBitmap(128, 128); Nodes.Helpers.Utils.Fill(black, 0, 0, 0f, 0f, 0f, 1); defaultBlack = new GLTextuer2D(PixelInternalFormat.Rgba8); defaultBlack.Bind(); defaultBlack.SetData(black.Image, GLInterfaces.PixelFormat.Rgba, 128, 128); defaultBlack.GenerateMipMaps(); defaultBlack.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); defaultBlack.SetWrap((int)TextureWrapMode.Repeat); GLTextuer2D.Unbind(); Materia.Nodes.Atomic.MeshNode.DefaultBlack = defaultBlack; } if (defaultWhite == null) { FloatBitmap black = new FloatBitmap(128, 128); Nodes.Helpers.Utils.Fill(black, 0, 0, 1f, 1f, 1f, 1); defaultWhite = new GLTextuer2D(PixelInternalFormat.Rgba8); defaultWhite.Bind(); defaultWhite.SetData(black.Image, GLInterfaces.PixelFormat.Rgba, 128, 128); defaultWhite.GenerateMipMaps(); defaultWhite.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); defaultWhite.SetWrap((int)TextureWrapMode.Repeat); GLTextuer2D.Unbind(); Materia.Nodes.Atomic.MeshNode.DefaultWhite = defaultWhite; } if (defaultGray == null) { FloatBitmap black = new FloatBitmap(128, 128); Nodes.Helpers.Utils.Fill(black, 0, 0, 0.5f, 0.5f, 0.5f, 1); defaultGray = new GLTextuer2D(PixelInternalFormat.Rgba8); defaultGray.Bind(); defaultGray.SetData(black.Image, GLInterfaces.PixelFormat.Rgba, 128, 128); defaultGray.GenerateMipMaps(); defaultGray.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); defaultGray.SetWrap((int)TextureWrapMode.Repeat); GLTextuer2D.Unbind(); } if (defaultDarkGray == null) { FloatBitmap black = new FloatBitmap(128, 128); Nodes.Helpers.Utils.Fill(black, 0, 0, 0.25f, 0.25f, 0.25f, 1); defaultDarkGray = new GLTextuer2D(PixelInternalFormat.Rgba8); defaultDarkGray.Bind(); defaultDarkGray.SetData(black.Image, GLInterfaces.PixelFormat.Rgba, 128, 128); defaultDarkGray.GenerateMipMaps(); defaultDarkGray.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); defaultDarkGray.SetWrap((int)TextureWrapMode.Repeat); GLTextuer2D.Unbind(); Materia.Nodes.Atomic.MeshNode.DefaultDarkGray = defaultDarkGray; } }
public CurvesNode(int w, int h, GraphPixelType p = GraphPixelType.RGBA) { Name = "Curves"; Id = Guid.NewGuid().ToString(); width = w; height = h; minValue = 0; maxValue = 1; points = new Dictionary <int, List <Point> >(); previewProcessor = new BasicImageRenderer(); tileX = tileY = 1; lutBrush = new FloatBitmap(256, 2); internalPixelType = p; curveLUT = new GLTextuer2D(GLInterfaces.PixelInternalFormat.Rgba8); curveLUT.Bind(); curveLUT.SetFilter((int)GLInterfaces.TextureMinFilter.Nearest, (int)GLInterfaces.TextureMagFilter.Nearest); curveLUT.SetWrap((int)GLInterfaces.TextureWrapMode.Repeat); GLTextuer2D.Unbind(); processor = new CurvesProcessor(curveLUT); //set defaults List <Point> pts = new List <Point>(); pts.Add(new Point(0, 1)); pts.Add(new Point(1, 0)); points[0] = pts; points[1] = pts; points[2] = pts; points[3] = pts; input = new NodeInput(NodeType.Color | NodeType.Gray, this, "Image Input"); Output = new NodeOutput(NodeType.Color | NodeType.Gray, this); input.OnInputAdded += Input_OnInputAdded; input.OnInputChanged += Input_OnInputChanged; input.OnInputRemoved += Input_OnInputRemoved; Inputs = new List <NodeInput>(); Inputs.Add(input); Outputs = new List <NodeOutput>(); Outputs.Add(Output); }
void LoadDefaultTextures() { if (defaultBlack == null) { FloatBitmap black = new FloatBitmap(128, 128); Nodes.Helpers.Utils.Fill(black, 0, 0, 0f, 0f, 0f, 1); defaultBlack = new GLTextuer2D(PixelInternalFormat.Rgba8); defaultBlack.Bind(); defaultBlack.SetData(black.Image, OpenTK.Graphics.OpenGL.PixelFormat.Rgba, 128, 128); defaultBlack.GenerateMipMaps(); defaultBlack.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); defaultBlack.SetWrap((int)TextureWrapMode.Repeat); GLTextuer2D.Unbind(); } if (defaultWhite == null) { FloatBitmap black = new FloatBitmap(128, 128); Nodes.Helpers.Utils.Fill(black, 0, 0, 1f, 1f, 1f, 1); defaultWhite = new GLTextuer2D(PixelInternalFormat.Rgba8); defaultWhite.Bind(); defaultWhite.SetData(black.Image, OpenTK.Graphics.OpenGL.PixelFormat.Rgba, 128, 128); defaultWhite.GenerateMipMaps(); defaultWhite.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); defaultWhite.SetWrap((int)TextureWrapMode.Repeat); GLTextuer2D.Unbind(); } if (defaultGray == null) { FloatBitmap black = new FloatBitmap(128, 128); Nodes.Helpers.Utils.Fill(black, 0, 0, 0.5f, 0.5f, 0.5f, 1); defaultGray = new GLTextuer2D(PixelInternalFormat.Rgba8); defaultGray.Bind(); defaultGray.SetData(black.Image, OpenTK.Graphics.OpenGL.PixelFormat.Rgba, 128, 128); defaultGray.GenerateMipMaps(); defaultGray.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); defaultGray.SetWrap((int)TextureWrapMode.Repeat); GLTextuer2D.Unbind(); } if (defaultDarkGray == null) { FloatBitmap black = new FloatBitmap(128, 128); Nodes.Helpers.Utils.Fill(black, 0, 0, 0.25f, 0.25f, 0.25f, 1); defaultDarkGray = new GLTextuer2D(PixelInternalFormat.Rgba8); defaultDarkGray.Bind(); defaultDarkGray.SetData(black.Image, OpenTK.Graphics.OpenGL.PixelFormat.Rgba, 128, 128); defaultDarkGray.GenerateMipMaps(); defaultDarkGray.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); defaultDarkGray.SetWrap((int)TextureWrapMode.Repeat); GLTextuer2D.Unbind(); } }
protected void CreateBufferIfNeeded() { if (buffer == null || buffer.Id == 0) { buffer = new GLTextuer2D((OpenTK.Graphics.OpenGL.PixelInternalFormat)((int)internalPixelType)); buffer.Bind(); buffer.SetFilter((int)OpenTK.Graphics.OpenGL.TextureMinFilter.Linear, (int)OpenTK.Graphics.OpenGL.TextureMagFilter.Linear); buffer.SetWrap((int)OpenTK.Graphics.OpenGL.TextureWrapMode.Repeat); if (internalPixelType == GraphPixelType.Luminance16F || internalPixelType == GraphPixelType.Luminance32F) { buffer.SetSwizzleLuminance(); } GLTextuer2D.Unbind(); } }
public static async Task Load() { int index = selectedIndex; if (index < 0) { index = 0; } if (index > available.Count - 1) { index = available.Count - 1; } if (index >= 0 && index < available.Count) { string f = available[index]; string iradpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Hdri", f, "irradiance.dds"); string prefpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Hdri", f, "prefiltered.dds"); try { DDSImage rad = await DDSReader.DDSReader.ReadImageAsync(iradpath); DDSImage pre = await DDSReader.DDSReader.ReadImageAsync(prefpath); App.Current.Dispatcher.Invoke(() => { Collection <DDSMipMap> mips = (Collection <DDSMipMap>)rad.Frames; if (mips.Count > 0) { var mip = mips[0]; byte[] data = mip.MipmapData[0]; if (Irradiance != null) { Irradiance.Release(); } Irradiance = new GLTextuer2D(PixelInternalFormat.Rgb16f); Irradiance.Bind(); Irradiance.SetData(data, PixelFormat.Rgb, (int)mip.Width, (int)mip.Height); Irradiance.SetFilter((int)TextureMinFilter.Linear, (int)TextureMagFilter.Linear); Irradiance.SetWrap((int)TextureWrapMode.ClampToEdge); GLTextuer2D.Unbind(); } mips = (Collection <DDSMipMap>)pre.Frames; if (mips.Count > 0) { if (Prefiltered != null) { Prefiltered.Release(); } Prefiltered = new GLTextuer2D(PixelInternalFormat.Rgb16f); Prefiltered.Bind(); Prefiltered.SetMaxMipLevel(4); for (int i = 0; i < mips.Count; ++i) { var mip = mips[i]; byte[] data = mip.MipmapData[0]; Prefiltered.SetData(data, PixelFormat.Rgb, (int)mip.Width, (int)mip.Height, i); } Prefiltered.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); Prefiltered.SetWrap((int)TextureWrapMode.ClampToEdge); GLTextuer2D.Unbind(); } if (OnHdriLoaded != null) { OnHdriLoaded.Invoke(Irradiance, Prefiltered); } }); } catch (Exception e) { Log.Error(e); } } }
protected async Task LoadHdri(string folder) { string iradpath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Hdri", folder, "irradiance.dds"); string prefpath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Hdri", folder, "prefiltered.dds"); try { DDSImage rad = await DDSReader.DDSReader.ReadImageAsync(iradpath); DDSImage pre = await DDSReader.DDSReader.ReadImageAsync(prefpath); App.Current.Dispatcher.Invoke(() => { Collection <DDSMipMap> mips = (Collection <DDSMipMap>)rad.Frames; if (mips.Count > 0) { var mip = mips[0]; byte[] data = mip.MipmapData[0]; if (irradiance != null) { irradiance.Release(); } irradiance = new GLTextuer2D(PixelInternalFormat.Rgb8); irradiance.Bind(); irradiance.SetData(data, OpenTK.Graphics.OpenGL.PixelFormat.Rgb, (int)mip.Width, (int)mip.Height); irradiance.SetFilter((int)TextureMinFilter.Linear, (int)TextureMagFilter.Linear); irradiance.SetWrap((int)TextureWrapMode.ClampToEdge); GLTextuer2D.Unbind(); } mips = (Collection <DDSMipMap>)pre.Frames; if (mips.Count > 0) { if (prefiltered != null) { prefiltered.Release(); } prefiltered = new GLTextuer2D(PixelInternalFormat.Rgb8); prefiltered.Bind(); prefiltered.SetMaxMipLevel(4); for (int i = 0; i < mips.Count; i++) { var mip = mips[i]; byte[] data = mip.MipmapData[0]; prefiltered.SetData(data, OpenTK.Graphics.OpenGL.PixelFormat.Rgb, (int)mip.Width, (int)mip.Height, i); } prefiltered.SetFilter((int)TextureMinFilter.LinearMipmapLinear, (int)TextureMagFilter.Linear); prefiltered.SetWrap((int)TextureWrapMode.ClampToEdge); GLTextuer2D.Unbind(); } Invalidate(); }); } catch (Exception e) { Console.WriteLine(e.StackTrace); } }