示例#1
0
        public bool Init(RendererContext rc)
        {
            long ticks = DateTime.Now.Ticks;

            OptionalEffect = rc.CreateEffect("SimpleMaterial_" + ticks);
            if (OptionalEffect == null)
                return false;

            OptionalEffect.BindPipeline();

            OptionalEffect.VertexProgram = rc.CreateShaderProgramFromFile("SimpleMaterial_VS_" + ticks, ShaderType.VertexShader,
                "lib/Renderer/Effects/SimpleMaterial/vertex_shader.vs");

            OptionalEffect.PixelProgram = rc.CreateShaderProgramFromFile("SimpleMaterial_PS_" + ticks, ShaderType.PixelShader,
                "lib/Renderer/Effects/SimpleMaterial/pixel_shader.ps");

            DiffuseColor = diffuseColor;
            SpecularColor = specularColor;

            OptionalEffect.UnbindPipeline();
                
            return true;
        }
示例#2
0
        public override bool Init(RendererContext rc)
        {
            CoreScene.RCActionInitSceneObject iso = new CoreScene.RCActionInitSceneObject(this, rc);

            if (rc.Application.ManagedThreadId == System.Threading.Thread.CurrentThread.ManagedThreadId)
            {
                ParticleVBO = rc.CreateVertexBuffer(IntPtr.Zero, 40 * (int)ParticleCount, RendererBufferUsage.StreamDraw, "ParticleVBO_" + DateTime.Now.Ticks);
                if (ParticleVBO == null)
                    return false;

                VertexBufferLayoutKind[] vblk = new VertexBufferLayoutKind[4];
                vblk[0] = new VertexBufferLayoutKind();
                vblk[0].AttributeID = 0;
                vblk[0].AttributeSize = 3;
                vblk[0].AttributeType = RendererVertexAttribType.Float;
                vblk[0].Normalized = false;
                vblk[0].Offset = 0;
                vblk[0].Stride = sizeof(float) * 10;

                vblk[1] = new VertexBufferLayoutKind();
                vblk[1].AttributeID = 1;
                vblk[1].AttributeSize = 4;
                vblk[1].AttributeType = RendererVertexAttribType.Float;
                vblk[1].Normalized = false;
                vblk[1].Offset = 12;
                vblk[1].Stride = sizeof(float) * 10;

                vblk[2] = new VertexBufferLayoutKind();
                vblk[2].AttributeID = 2;
                vblk[2].AttributeSize = 2;
                vblk[2].AttributeType = RendererVertexAttribType.Float;
                vblk[2].Normalized = false;
                vblk[2].Offset = 28;
                vblk[2].Stride = sizeof(float) * 10;

                vblk[3] = new VertexBufferLayoutKind();
                vblk[3].AttributeID = 3;
                vblk[3].AttributeSize = 1;
                vblk[3].AttributeType = RendererVertexAttribType.Float;
                vblk[3].Normalized = false;
                vblk[3].Offset = 36;
                vblk[3].Stride = sizeof(float) * 10;

                ParticleVAO = rc.CreateVertexBufferArray(ParticleVBO, vblk, "ParticleVAO_" + DateTime.Now.Ticks);
                if (ParticleVAO == null)
                {
                    rc.DeleteGraphicsResourceAsync(ParticleVBO);
                    return false;
                }

                //Load BasicEffect
                long ticks = DateTime.Now.Ticks;

                ParticleEffect = rc.CreateEffect("ParticleEffect_" + ticks);
                ParticleEffect.VertexProgram = rc.CreateShaderProgramFromFile("ParticleEffect_VertexProgram_" + ticks, ShaderType.VertexShader, "lib/Renderer/Effects/BasicParticleEffect/vertex_shader.vs");
                ParticleEffect.PixelProgram = rc.CreateShaderProgramFromFile("ParticleEffect_PixelProgram_" + ticks, ShaderType.PixelShader, "lib/Renderer/Effects/BasicParticleEffect/pixel_shader.ps");
                ParticleEffect.GeometryProgram = rc.CreateShaderProgramFromFile("ParticleEffect_GeometryProgram" + ticks, ShaderType.GeometryShader, "lib/Renderer/Effects/BasicParticleEffect/geometry_shader.gs");

                BillboardTexture = rc.CreateTexture2D("BillboardTexture_" + ticks, true, "Content/Particles/particle_03.png");
                BillboardTexture.Sampler.MagnificationFilter = MagnificationFilter.InterpolateLinear;
                BillboardTexture.Sampler.MinificationFilter = MinificationFilter.InterpolateLinearAndInterpolateMipmapLinear;
            }
            else
                rc.AddRCActionJob(iso);

            IsInitialized = true;

            return true;
        }