Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="source"></param>
 /// <param name="dest"></param>
 public BlendingGroupNode(BlendSrcFactor source, BlendDestFactor dest)
 {
     this.blending = new BlendFuncSwitch(source, dest);
 }