source: GTP/trunk/App/Demos/Illum/Shark3D/version164x12u/IllumDemo/src/gtp_shader/gtp_shader_mainenum.h @ 2196

Revision 2196, 5.1 KB checked in by szirmay, 17 years ago (diff)
Line 
1///////////////////////////////////////////////////////////////////////////////
2//
3//      ##  ######
4//       ######  ###
5//  ## ###############        Shark 3D Engine (www.shark3d.com)
6//   ########## # # #
7//    ########                Copyright (c) 1996-2006 Spinor GmbH.
8//   ######### # # #          All rights reserved.
9//  ##   ##########
10//      ##
11//
12///////////////////////////////////////////////////////////////////////////////
13
14//@cpp
15
16#ifndef GTP_SHADER_MAINENUM_H
17#define GTP_SHADER_MAINENUM_H
18
19#include "../../interf/eng_shader.h"
20#include "../../interf/eng_shaderenv.h"
21#include "../../interf/eng_pos.h"
22#include "../../../comp/core/comp_setup.h"
23#include "../../../comp/util/comp_util_uniquebase.h"
24
25///////////////////////////////////////////////////////////////////////////////
26
27class gtp_Shader_MainEnumGfx;
28
29//@
30typedef s3d_CUtilKeyEntry<s3d_CEngGfxCtxPtr, gtp_Shader_MainEnumGfx*>
31        gtp_Shader_MainEnumGfxEntry;
32
33//@
34typedef s3d_CUtilTree<gtp_Shader_MainEnumGfxEntry>
35        gtp_Shader_MainEnumGfxTree;
36
37///////////////////////////////////////////////////////////////////////////////
38
39struct gtp_Shader_MainEnumData: s3d_CUtilPtrBase
40{
41    s3d_CUtilStr m_Info;
42    s3d_CUtilAtomArray m_MethodArray;
43    s3d_CUtilStr m_MainEnumVarInfo;
44    s3d_CUtilAtomPtr m_MainEnumVarAtom;
45};
46
47typedef s3d_CUtilPtr<gtp_Shader_MainEnumData>
48        gtp_Shader_MainEnumDataPtr;
49
50///////////////////////////////////////////////////////////////////////////////
51
52//@
53class gtp_Shader_MainEnum
54    : public s3d_CEngShader,
55    public s3d_CCompUtilUniqueBase,
56    public s3d_CCompSetup
57{
58public:
59    S3D_UTIL_RTTI_TABLE_DECLARE
60
61    //@
62    gtp_Shader_MainEnum();
63
64    //@
65    void SetupInit(
66            s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info,
67            s3d_CCompSuppl *FetchSuppl, s3d_CUtilSnkChunk *Param);
68
69    //@
70    void SetupDone();
71
72    //@
73    s3d_CUtilStr GetInfo();
74
75    //@
76    void RegisterNotif(s3d_CUtilNotifRecip *Recip);
77
78    //@
79    s3d_CEngShaderGfxPtr FindShaderGfx(
80            s3d_CUtilNotifGather *NotifGather, s3d_CEngGfxCtx *GfxCtx);
81
82private:
83    s3d_CEngShaderEnvPtr m_ShaderEnv;
84    gtp_Shader_MainEnumGfxTree m_ShaderGfxTree;
85    gtp_Shader_MainEnumDataPtr m_Data;
86};
87
88//@
89typedef s3d_CUtilPtr<gtp_Shader_MainEnum>
90        gtp_Shader_MainEnumPtr;
91
92///////////////////////////////////////////////////////////////////////////////
93
94//@
95class gtp_Shader_MainEnumGfx: public s3d_CEngShaderGfx
96{
97public:
98    //@
99    gtp_Shader_MainEnumGfx(
100            s3d_CEngShaderEnv *ShaderEnv, s3d_CEngGfxCtx *GfxCtx,
101            gtp_Shader_MainEnumData *Data);
102
103    //@
104    gtp_Shader_MainEnumGfxTree::CNode *GetNode();
105
106    //@
107    void RegisterNotif(s3d_CUtilNotifRecip *Recip);
108
109    //@
110    void ExtractGfx();
111
112    //@
113    bool IsValid();
114
115    //@
116    void LinkCollect(s3d_CUtilAtomSet &VarAtomSet);
117
118    //@
119    void LinkAppoint(s3d_CDrvVarDecl *VarDecl);
120
121    //@
122    s3d_CEngShaderInstPtr CreateShaderInst(
123            s3d_CEngShaderHead *Head);
124
125private:
126    gtp_Shader_MainEnumGfxTree::CNode m_Node;
127    s3d_CEngShaderEnvPtr m_ShaderEnv;
128    gtp_Shader_MainEnumDataPtr m_Data;
129
130    // ShaderGfx-Data Variables:
131    s3d_CDrvVarSlotInit m_MainEnumVarSlot;
132
133    friend class gtp_Shader_MainEnumInst;
134};
135
136//@
137typedef s3d_CUtilPtr<gtp_Shader_MainEnumGfx>
138        gtp_Shader_MainEnumGfxPtr;
139
140///////////////////////////////////////////////////////////////////////////////
141
142//@
143class gtp_Shader_MainEnumInst
144    : public s3d_CEngShaderInst,
145    public s3d_CEngShaderExec
146{
147public:
148    //@
149    gtp_Shader_MainEnumInst(
150            s3d_CEngShaderEnv *ShaderEnv,
151            gtp_Shader_MainEnumGfx *ShaderGfx);
152
153    //@
154    void RegisterNotif(s3d_CUtilNotifRecip *Recip);
155
156    //@
157    void SetShaderCtx(s3d_CEngShaderCtx *ShaderCtx);
158
159    //@
160    void SetGfxState(s3d_CEngGfxState *GfxState);
161
162    //@
163    void SetPos(s3d_CEngPos *Pos);
164
165    //@
166    void SetModel(s3d_CEngModel *Model);
167
168    //@
169    void ArrangeCollect(
170            s3d_CUtilMemPool *MemPool,
171            s3d_CEngShaderScopeArray &ScopeArray);
172
173    //@
174    void ArrangeInit(
175            s3d_CUtilMemPool *MemPool,
176            s3d_CEngShaderScopeArray_cr ScopeArray);
177
178    //@
179    void ArrangePerform(
180            s3d_CUtilMemPool *MemPool,
181            s3d_CEngShaderScopeArray_cr ScopeArray);
182
183    //@
184    void ArrangeFeedback(
185            s3d_CUtilMemPool *MemPool,
186            s3d_CEngShaderScopeArray_cr ScopeArray);
187
188    //@
189    void ArrangeGather(
190            s3d_CEngShaderExecArray &ExecArray);
191
192    //@
193    void ShaderExecPerform(
194            s3d_CEngShaderScope *Scope,
195            s3d_CUtilAtom *Method,
196            s3d_CEngGfxTaskArray &TaskArray);
197
198private:
199    s3d_CEngShaderEnvPtr m_ShaderEnv;
200    gtp_Shader_MainEnumGfxPtr m_ShaderGfx;
201    s3d_CEngPosPtr m_Pos;
202
203    void SetVars(
204            s3d_CUtilMemPool *MemPool, s3d_CEngShaderScope *Scope);
205};
206
207//@
208typedef s3d_CUtilPtr<gtp_Shader_MainEnumInst>
209        gtp_Shader_MainEnumInstPtr;
210
211///////////////////////////////////////////////////////////////////////////////
212
213#endif
Note: See TracBrowser for help on using the repository browser.