public Texture2 CreateTexture() { var result = new Texture2(); result.MinFilter = TextureFilter.LinearMipmapLinear; result.MagFilter = TextureFilter.Linear; result.Wrap = TextureWrapMode.ClampToEdge; result.Anisotropy = 4; result.SetImage(_bmp, false, false, false); return(result); }
protected override void OnStart() { base.OnStart(); var points = new List <Vector3>(); points.Add(new Vector3(0, 0, 0)); points.Add(new Vector3(0, 0, 1)); points.Add(new Vector3(0, 1, 1)); points.Add(new Vector3(0, 1, 0)); points.Add(new Vector3(0, 0, 0)); points.Add(new Vector3(0, -2, 0)); points.Add(new Vector3(0, -2, -2)); points = Spline.CatmullRom(points, 0.02f); var trajectory = new List <ExtrusionPoint>(); points.ForEach(_ => trajectory.Add(new ExtrusionPoint() { Radius = 0.1f, Position = _ })); var wellMesh = CircularExtrusion.Create(trajectory); wellMesh.DrawStyle = PolygonMode.Fill; _wellMaterial = new Material(MaterialType.FlatVertexColor); var texture = new Texture2(); _wellMaterial.MainTexture = new Texture2("Resources\\Textures\\Wellbore\\fluid_colors.png", false); _wellMaterial.SetTexture("uniform_DisplaceTexture", texture); _wellMaterial.Color = Vector4.One; var renderer = SceneObject.AddComponent <MeshRenderable>(); renderer.Mesh = wellMesh; renderer.Material = _wellMaterial; var buffer = new ByteBuffer(1024 * 4); for (int i = 0; i < buffer.Length; i += 4) { var t = 0.1f + (i / (float)buffer.Length); var noise1 = GetNoise(t * 400f) * 0.6f; var noise2 = Math.Pow(GetNoise(t * 6), 2); //noise1 = 0; //noise2 = 0; buffer[i] = (byte)(255 * (noise1 + noise2) / 1.6f); } texture.SetImage(buffer, new Size(1, buffer.Length / 4), PixelFormat.Red, PixelInternalFormat.R8); }
public Graphics(UserControl control, SceneTime time, ShadingTechnique technique) { Assert.NotNull(control); Assert.NotNull(time); IsDisposed = false; CurrentShadingTechnique = technique; if (GL.GetCurrent(false) != null || GetCurrent(false) != null) { var error = "Only one NetGL view per thread is now supported. Try launching 3D view in different thread."; Log.Error(error); throw new InvalidOperationException(error); } _control = control; _time = time; try { _glContext = new GL(_control.Handle); } catch { Dispose(); throw; } _currentContext.Value = this; _glContext.Enable(EnableCap.DepthTest); _glContext.Enable(EnableCap.Texture2D); _glContext.Enable(EnableCap.CullFace); _glContext.Enable(EnableCap.ProgramPointSize); _glContext.Enable(EnableCap.PointSprite); _glContext.CullFace(MaterialFace.Back); _glContext.FrontFace(FrontFaceDirection.CounterClockwise); _glContext.BlendEquation(BlendEquations.FuncAdd); _glContext.BlendFunc(BlendMode.SrcAlpha, BlendMode.OneMinusSrcAlpha); _glContext.SwapInterval(_swapInterval); _globalUniforms = new GlobalUniformsBufferObject(); _standartUniforms = new StandardUniformsBufferObject(); _defaultMaterial = new Material(MaterialType.DiffuseColor); _blankTexture = new Texture2(); _blankTexture.SetImage(new byte[4] { 255, 0, 255, 255 }, new Size(1, 1), Core.PixelFormat.Rgba, Core.PixelInternalFormat.Rgba8); _quadShader = new QuadShader(); _displayQuadVao = CreateDisplayQuadVao(); switch (CurrentShadingTechnique) { case ShadingTechnique.Forward: _renderTechnique = new ForwardRender(); break; case ShadingTechnique.Deferred: _renderTechnique = new DeferredRender(); break; default: throw new NotSupportedException(CurrentShadingTechnique.ToString()); } ScreenSize = _control.ClientSize; }