Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

RmMFCShaderASMParser.h

00001 //=================================================================================================//
00002 // filename: RmMFCShaderASMParser.h                                                                //
00003 //                                                                                                 //
00004 // author:      Toshiaki Tsuji                                                                     //
00005 //              ATI Research, Inc.                                                                 //
00006 //              3D Application Research Group                                                      //
00007 //                                                                                                 //
00008 // description: ASM Code Parser used by ASM Page                                                   //
00009 //                                                                                                 //
00010 //=================================================================================================//
00011 // $File: //depot/3darg/Tools/RenderMonkey/sdk/Include/MFCUtilities/RmMFCShaderASMParser.h $                                   
00012 // $Author: bmistal $ $Revision: #2 $                                                                     
00013 //=================================================================================================//
00014 //   (C) 2004 ATI Research, Inc.  All rights reserved.                                             //
00015 //=================================================================================================//
00016 
00017 #ifndef RM_MFC_SHADER_ASM_PARSER_H
00018 #define RM_MFC_SHADER_ASM_PARSER_H
00019 
00020 #include "RmMFCShaderSyntaxParser.h"
00021 
00022 //..............................................................................................................//
00023 //..............................................................................................................//
00024 //..............................................................................................................//
00025 //..............................................................................................................//
00026 //  ASM Parser
00027 //..............................................................................................................//
00028 //..............................................................................................................//
00029 //..............................................................................................................//
00030 //..............................................................................................................//
00031 class RMMFCUTIL_API RmMFCShaderASMParser : public RmMFCShaderSyntaxParser
00032 {
00033 public :
00034    enum OpType
00035    {
00036       OP_ALU,
00037       OP_TEX
00038    }; // End of OpType 
00039 
00040    struct ShaderOp
00041    {
00042       OpType    opType;
00043       RmStringT word;
00044       int       instructionCount;
00045    }; // End of 
00046 
00047    typedef RmLinkedList<ShaderOp*>         ShaderOpList;
00048    typedef ShaderOpList::iterator          ShaderOpListIterator;
00049    typedef ShaderOpList::const_iterator    ShaderOpListConstIterator;
00050 
00051 public :
00052    RmMFCShaderASMParser();
00053    virtual ~RmMFCShaderASMParser();
00054 
00055    // Init InstructionCounts
00056    void InitInstructionCounts();
00057 
00058    // Called by Parser
00059    virtual void OnKeywordFound( Keyword* pKeyword );
00060 
00061    // Op 
00062    void InsertOp( OpType opType, const RM_TCHAR *szWord, int instructionCount );
00063    ShaderOp* FindShaderOp( const RM_TCHAR *szWord );
00064 
00065    // Result Count
00066    int           GetALUOpCount() const { return m_ALUOPCount; };
00067    int           GetTexOpCount() const { return m_TexOPCount; };
00068 
00069    // Shader Version
00070    void SetShaderVersion( RmShaderVersion version );
00071    RmShaderVersion GetShaderVersion() const { return m_shaderVersion; };
00072 
00073 private :
00074    RmShaderVersion m_shaderVersion;
00075    int             m_ALUOPCount;
00076    int             m_TexOPCount;
00077    ShaderOpList    m_shaderOpTable[256];
00078 
00079    void CreateShaderOpTable_VS_1_1();
00080    void CreateShaderOpTable_VS_2_0();
00081    void CreateShaderOpTable_VS_3_0();
00082    void CreateShaderOpTable_PS_1_X();
00083    void CreateShaderOpTable_PS_2_0();
00084    void CreateShaderOpTable_PS_3_0();
00085    void CleanupShaderOpTable();
00086 }; // End of RmMFCShaderASMParser
00087 
00088 #endif
00089 

Generated on Fri Feb 25 16:08:38 2005 for RenderMonkey SDK by doxygen 1.3.6