public static ParticleNode Create() { var blend = new BlendFuncSwitch(BlendSrcFactor.SrcAlpha, BlendDestFactor.OneMinusSrcAlpha); var depthTest = new DepthTestSwitch(false); RenderMethodBuilder defaultBuilder, textureBuilder; { var vs = new VertexShader(vert); var fs = new FragmentShader(frag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); defaultBuilder = new RenderMethodBuilder(provider, map, blend, depthTest); } { var vs = new VertexShader(vert); var fs = new FragmentShader(texturedFrag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); textureBuilder = new RenderMethodBuilder(provider, map, blend, depthTest); } var model = new ParticleModel(); var node = new ParticleNode(model, defaultBuilder, textureBuilder); node.Initialize(); return(node); }
public static OGLDevParticleNode Create(int particleCount) { IShaderProgramProvider updateProvider, renderProvider; { var vs = new VertexShader(updateVert); var feedbackVaryings = new string[] { outPosition, outVelocity }; updateProvider = new ShaderArray(feedbackVaryings, ShaderProgram.BufferMode.Separate, vs); } { var vs = new VertexShader(renderVert); var gs = new GeometryShader(renderGeom); var fs = new FragmentShader(renderFrag); renderProvider = new ShaderArray(vs, gs, fs); } RenderMethodBuilder updateBuilder, updateBuilder2, renderBuilder, renderBuilder2; var blend = new BlendFuncSwitch(BlendSrcFactor.One, BlendDestFactor.One); { var map = new AttributeMap(); map.Add(inPosition, OGLDevParticleModel.inPosition); map.Add(inVelocity, OGLDevParticleModel.inVelocity); updateBuilder = new RenderMethodBuilder(updateProvider, map); } { var map = new AttributeMap(); map.Add(inPosition, OGLDevParticleModel.inPosition2); map.Add(inVelocity, OGLDevParticleModel.inVelocity2); updateBuilder2 = new RenderMethodBuilder(updateProvider, map); } { var map = new AttributeMap(); map.Add(vposition, OGLDevParticleModel.inPosition); renderBuilder = new RenderMethodBuilder(renderProvider, map, blend); } { var map = new AttributeMap(); map.Add(vposition, OGLDevParticleModel.inPosition2); renderBuilder2 = new RenderMethodBuilder(renderProvider, map, blend); } var model = new OGLDevParticleModel(particleCount); var node = new OGLDevParticleNode(model, updateBuilder, updateBuilder2, renderBuilder, renderBuilder2); node.Initialize(); return(node); }
public static RectGlassNode Create(float width, float height) { var model = new RectGlassModel(width, height); var vs = new VertexShader(vert); var fs = new FragmentShader(frag); var array = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", RectGlassModel.strPosition); var blend = new BlendFuncSwitch(BlendSrcFactor.SrcAlpha, BlendDestFactor.OneMinusSrcAlpha); var depthMask = new DepthMaskSwitch(false); var builder = new RenderMethodBuilder(array, map, blend, depthMask); var node = new RectGlassNode(model, builder); node.Blend = blend; node.ModelSize = new vec3(width, height, 0); node.Initialize(); return(node); }
public static AccumulationNode Create() { var model = new Sphere(); RenderMethodBuilder renderBuilder; { var vs = new VertexShader(renderVert); var fs = new FragmentShader(renderFrag); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", Sphere.strPosition); map.Add("inColor", Sphere.strColor); var blend = new BlendFuncSwitch(BlendSrcFactor.SrcAlpha, BlendDestFactor.OneMinusSrcAlpha); renderBuilder = new RenderMethodBuilder(provider, map); } var node = new AccumulationNode(model, renderBuilder); node.ModelSize = model.Size; node.Initialize(); return(node); }
/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="dest"></param> public BlendingGroupNode(BlendSrcFactor source, BlendDestFactor dest) { this.blending = new BlendFuncSwitch(source, dest); }