コード例 #1
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);
         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;
 }
コード例 #2
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);
            }
        }
コード例 #3
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;
 }
コード例 #4
0
ファイル: SkyboxNode.cs プロジェクト: tfart/CSharpGL
        /// <summary>
        ///
        /// </summary>
        /// <param name="totalBmp"></param>
        /// <returns></returns>
        public static SkyboxNode Create(Bitmap[] bitmaps)
        {
            var vs       = new VertexShader(vertexCode, inPosition);
            var fs       = new FragmentShader(fragmentCode);
            var provider = new ShaderArray(vs, fs);
            var map      = new AttributeMap();

            map.Add(inPosition, Skybox.strPosition);
            var cullface = new CullFaceState(CullFaceMode.Back);// display back faces only.
            var builder  = new RenderMethodBuilder(provider, map, cullface);
            var model    = new Skybox();
            var node     = new SkyboxNode(model, Skybox.strPosition, bitmaps, builder);

            node.EnablePicking = TwoFlags.Children;// sky box should not take part in picking.
            node.Initialize();

            return(node);
        }