private void FormMain_Load(object sender, EventArgs e) { var position = new vec3(0, 0, 0.9f); var center = new vec3(0, 0, 0); var up = new vec3(0, 1, 0); var camera = new Camera(position, center, up, CameraType.Perspecitive, this.winGLCanvas1.Width, this.winGLCanvas1.Height); this.scene = new Scene(camera); { this.computeShaderNode = ComputeShaderNode.Create(); this.scene.RootNode = this.computeShaderNode; } var list = new ActionList(); var transformAction = new TransformAction(scene); list.Add(transformAction); var renderAction = new RenderAction(scene); list.Add(renderAction); this.actionList = list; var manipulater = new FirstPerspectiveManipulater(); manipulater.Bind(camera, this.winGLCanvas1); manipulater.StepLength = 0.1f; }
public static ComputeShaderNode Create() { var list = new List <Config>(); list.Add(new Config(1, height, 0)); // fuzzy list.Add(new Config(1, height, 1)); // inverseColor list.Add(new Config(width / 8, height / 8, 2)); // mosaic RenderMethodBuilder fuzzy, inverseColor, mosaic, render; { var cs = new CSharpGL.ComputeShader(fuzzyComp); var provider = new ShaderArray(cs); var map = new AttributeMap(); fuzzy = new RenderMethodBuilder(provider, map); } { var cs = new CSharpGL.ComputeShader(inverseColorComp); var provider = new ShaderArray(cs); var map = new AttributeMap(); inverseColor = new RenderMethodBuilder(provider, map); } { var cs = new CSharpGL.ComputeShader(mosaicComp); var provider = new ShaderArray(cs); var map = new AttributeMap(); mosaic = new RenderMethodBuilder(provider, map); } { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, RectangleModel.strPosition); map.Add(inUV, RectangleModel.strUV); render = new RenderMethodBuilder(provider, map); } var node = new ComputeShaderNode(list.ToArray(), new RectangleModel(), RectangleModel.strPosition, fuzzy, inverseColor, mosaic, render); node.Initialize(); return(node); }