예제 #1
0
        static unsafe void Main(string[] args)
        {
            var shader = new TestShader();

            ShaderInterpreter <IVertexShader> .Interpret <TestShader>();

            Stopwatch sw = new Stopwatch();

            sw.Start();
            ShaderInvoker <IVertexShader> .ChangeActiveShader(shader);

            Vector4[] input = new Vector4[itr_count];
            for (int i = 0; i < 480000 / itr_count; i++)
            {
                for (int j = 0; j < itr_count; j++)
                {
                    input[j].X = i;
                    input[j].Y = i;
                    input[j].Z = i;
                    input[j].W = i;
                }
                ShaderInvoker <IVertexShader> .Invoke(itr_count, input);
            }
            sw.Stop();
            WriteLine(sw.ElapsedMilliseconds);
            ReadKey();
        }
예제 #2
0
        static unsafe void Main(string[] args)
        {
            var shader = new TestShader();

            ShaderInterpreter <IVertexShader> .Interpret <TestShader>();

            Stopwatch sw = new Stopwatch();

            sw.Start();
            ShaderInvoker <IVertexShader> .ChangeActiveShader(shader);

            float *zero = stackalloc float[4];

            *(Vector4 *)zero = Vector4.Zero;
            for (int i = 0; i < 480000; i++)
            {
                ShaderInvoker <IVertexShader> .Invoke(zero);
            }
            sw.Stop();
            WriteLine(sw.ElapsedMilliseconds);
            ReadKey();
        }
예제 #3
0
        public void TestShaderInterpret()
        {
            ShaderInterpreter <IVertexShader> .InterpretAll();

            ShaderInterpreter <IFragmentShader> .InterpretAll();
        }
예제 #4
0
 static Shader_Scale()
 {
     ShaderInterpreter <IVertexShader, ShaderInOutPatternDefault> .Interpret <Shader_Scale>();
 }
예제 #5
0
 static Shader_Distort()
 {
     ShaderInterpreter <IVertexShader, ShaderInOutPatternDefault> .Interpret <Shader_Distort>();
 }