예제 #1
0
        private void LoadShader(string p_filepath, string p_VS_name, string p_PS_name, InputElement[] p_elements)
        {
            var vshader = ShaderBytecode.CompileFromFile(p_filepath, p_VS_name, "vs_4_0", ShaderFlags.None,
                                                         EffectFlags.None);
            var pshader = ShaderBytecode.CompileFromFile(p_filepath, p_PS_name, "fx_5_0", ShaderFlags.None,
                                                         EffectFlags.None);
            var sig = ShaderSignature.GetInputSignature(vshader);

            ShaderEffect = new Effect(GraphicsRenderer.Device, pshader);
            EffectTechnique technique = ShaderEffect.GetTechniqueByIndex(0);

            ShaderPass = technique.GetPassByIndex(0);

            Layout = new InputLayout(GraphicsRenderer.Device, sig, p_elements);
        }
예제 #2
0
        public static void Init()
        {
            var btcode = ShaderBytecode.CompileFromFile(Constants.ParticleShader, "VS", "vs_4_0", ShaderFlags.None,
                                                        EffectFlags.None);
            var btcode1 = ShaderBytecode.CompileFromFile(Constants.ParticleShader, "PS", "fx_5_0", ShaderFlags.None,
                                                         EffectFlags.None);
            var sig = ShaderSignature.GetInputSignature(btcode);

            Effects = new Effect(GraphicsRenderer.Device, btcode1);
            EffectTechnique technique = Effects.GetTechniqueByIndex(0);

            Pass = technique.GetPassByIndex(0);

            Elements = new[]
            {
                new InputElement("POSITION", 0, Format.R32G32B32_Float, 0),
                new InputElement("TEXTURE", 0, Format.R32G32B32_Float, 1),
                new InputElement("ORIGIN", 0, Format.R32G32B32_Float, 2)
            };

            InputLayout = new InputLayout(GraphicsRenderer.Device, sig, Elements);
        }