public static DXPreshader CreatePreshader(MojoShader.MOJOSHADER_preshader preshaderData)
        {
            var symbols = DXHelper.UnmarshalArray<MojoShader.MOJOSHADER_symbol>(
                    preshaderData.symbols, (int)preshaderData.symbol_count);

            var instructions = DXHelper.UnmarshalArray<MojoShader.MOJOSHADER_preshaderInstruction>(
                preshaderData.instructions, (int)preshaderData.instruction_count);

            var literals = DXHelper.UnmarshalArray<double>(
                preshaderData.literals, (int)preshaderData.literal_count);


            var preshader = new DXPreshader();

            preshader._temp_count = (int)preshaderData.temp_count;
            preshader._symbols = symbols;
            preshader._instructions = instructions;
            preshader._literals = literals;

            var input_count = 0;
            foreach (var symbol in symbols)
                input_count = Math.Max(input_count, (int)(symbol.register_index + symbol.register_count));            
            preshader._input_count = input_count;

            return preshader;
        }
        public static DXPreshader CreatePreshader(MojoShader.MOJOSHADER_preshader preshaderData)
        {
            var symbols = DXHelper.UnmarshalArray <MojoShader.MOJOSHADER_symbol>(
                preshaderData.symbols, (int)preshaderData.symbol_count);

            var instructions = DXHelper.UnmarshalArray <MojoShader.MOJOSHADER_preshaderInstruction>(
                preshaderData.instructions, (int)preshaderData.instruction_count);

            var literals = DXHelper.UnmarshalArray <double>(
                preshaderData.literals, (int)preshaderData.literal_count);


            var preshader = new DXPreshader();

            preshader._temp_count   = (int)preshaderData.temp_count;
            preshader._symbols      = symbols;
            preshader._instructions = instructions;
            preshader._literals     = literals;

            var input_count = 0;

            foreach (var symbol in symbols)
            {
                input_count = Math.Max(input_count, (int)(symbol.register_index + symbol.register_count));
            }
            preshader._input_count = input_count;

            return(preshader);
        }
Beispiel #3
0
 public DXExpression(string indexName, byte[] expressionCode)
 {
     _indexName = indexName;
     _preshader = DXPreshader.CreatePreshader(expressionCode);
 }
 public DXExpression(string indexName, byte[] expressionCode)
 {
     _indexName = indexName;
     _preshader = DXPreshader.CreatePreshader(expressionCode);
 }