Esempio n. 1
0
        public static ParticleNode Create()
        {
            var blend = new BlendState(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.OneMinusSourceAlpha);
            var depthTest = new DepthTestState(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 OrderIndependentTransparencyRenderer(IBufferable model, vec3 lengths,
     string positionName, string normalName)
 {
     {
         var map = new AttributeMap();
         map.Add("position", positionName);
         map.Add("normal", normalName);
         var build_lists = new ShaderCode[2];
         build_lists[0] = new ShaderCode(File.ReadAllText(@"shaders\OIT\build_lists.vert"), ShaderType.VertexShader);
         build_lists[1] = new ShaderCode(File.ReadAllText(@"shaders\OIT\build_lists.frag"), ShaderType.FragmentShader);
         this.buildListsRenderer = new PickableRenderer(model, build_lists, map, positionName);
     }
     {
         var map = new AttributeMap();
         map.Add("position", positionName);
         var resolve_lists = new ShaderCode[2];
         resolve_lists[0] = new ShaderCode(File.ReadAllText(@"shaders\OIT\resolve_lists.vert"), ShaderType.VertexShader);
         resolve_lists[1] = new ShaderCode(File.ReadAllText(@"shaders\OIT\resolve_lists.frag"), ShaderType.FragmentShader);
         this.resolve_lists = new PickableRenderer(model, resolve_lists, map, positionName);
     }
     {
         this.depthTestState = new DepthTestState(false);
         this.cullFaceState = new CullFaceState(false);
     }
     this.ModelSize = lengths;
 }
Esempio n. 3
0
        protected override void DoInitialize()
        {
            base.DoInitialize();

            // Create the atomic counter buffer
            {
                const int           length = 1;
                AtomicCounterBuffer buffer = AtomicCounterBuffer.Create(typeof(uint), length, BufferUsage.DynamicCopy);
                // another way to do this:
                //uint data = 1;
                //AtomicCounterBuffer buffer = data.GenAtomicCounterBuffer(BufferUsage.DynamicCopy);
                // Reset atomic counter
                IntPtr data = buffer.MapBuffer(MapBufferAccess.WriteOnly);
                unsafe
                {
                    var array = (uint *)data.ToPointer();
                    array[0] = 0;
                }
                buffer.UnmapBuffer();

                this.atomicCounterBuffer = buffer;
            }

            {
                this.depthTestState = new DepthTestState(false);
                this.cullFaceState  = new CullFaceState(false);
            }
        }
Esempio n. 4
0
 public OrderIndependentTransparencyRenderer(IBufferable model, vec3 lengths,
                                             string positionName, string normalName)
 {
     {
         var map = new AttributeMap();
         map.Add("position", positionName);
         map.Add("normal", normalName);
         var build_lists = new ShaderCode[2];
         build_lists[0] = new ShaderCode(File.ReadAllText(@"shaders\OIT\build_lists.vert"), ShaderType.VertexShader);
         build_lists[1] = new ShaderCode(File.ReadAllText(@"shaders\OIT\build_lists.frag"), ShaderType.FragmentShader);
         var provider = new ShaderCodeArray(build_lists);
         this.buildListsRenderer = new PickableRenderer(model, provider, map, positionName);
     }
     {
         var map = new AttributeMap();
         map.Add("position", positionName);
         var resolve_lists = new ShaderCode[2];
         resolve_lists[0] = new ShaderCode(File.ReadAllText(@"shaders\OIT\resolve_lists.vert"), ShaderType.VertexShader);
         resolve_lists[1] = new ShaderCode(File.ReadAllText(@"shaders\OIT\resolve_lists.frag"), ShaderType.FragmentShader);
         var provider = new ShaderCodeArray(resolve_lists);
         this.resolve_lists = new PickableRenderer(model, provider, map, positionName);
     }
     {
         this.depthTestState = new DepthTestState(false);
         this.cullFaceState  = new CullFaceState(false);
     }
     this.ModelSize = lengths;
 }