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

Revision 2196, 5.2 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_CREATETEX_H
17#define GTP_SHADER_CREATETEX_H
18
19#include "../../interf/eng_shader.h"
20#include "../../interf/eng_shaderenv.h"
21#include "../../../comp/core/comp_setup.h"
22#include "../../../comp/util/comp_util_uniquebase.h"
23
24///////////////////////////////////////////////////////////////////////////////
25
26class gtp_ShaderCreateTexGfx;
27
28//@
29typedef s3d_CUtilKeyEntry<s3d_CEngGfxCtxPtr,
30        gtp_ShaderCreateTexGfx*>
31                gtp_ShaderCreateTexGfxEntry;
32
33//@
34typedef s3d_CUtilTree<gtp_ShaderCreateTexGfxEntry>
35                gtp_ShaderCreateTexGfxTree;
36
37///////////////////////////////////////////////////////////////////////////////
38
39struct gtp_ShaderCreateTexData: s3d_CUtilPtrBase
40{
41    s3d_CUtilStr m_Info;
42    s3d_CUtilAtomArray m_MethodArray;
43    s3d_CDrvGfxTexPtr m_Tex;
44    s3d_CUtilStr m_TexChanVarInfo;
45    s3d_CUtilAtomPtr m_TexChanVarAtom;
46    int m_SampMode;
47        int m_TexWidth;
48        int m_TexHeight;
49        int m_TexDepth;
50        int m_TexProp;
51};
52
53typedef s3d_CUtilPtr<gtp_ShaderCreateTexData>
54        gtp_ShaderCreateTexDataPtr;
55
56///////////////////////////////////////////////////////////////////////////////
57
58//@
59class gtp_ShaderCreateTex
60    : public s3d_CEngShader,
61    public s3d_CCompUtilUniqueBase,
62    public s3d_CCompSetup
63{
64public:
65    S3D_UTIL_RTTI_TABLE_DECLARE
66
67    //@
68    gtp_ShaderCreateTex();
69
70    //@
71    void SetupInit(
72            s3d_CUtilMsgHandler *MsgHandler, s3d_CUtilStr_cr Info,
73            s3d_CCompSuppl *FetchSuppl, s3d_CUtilSnkChunk *Param);
74
75    //@
76    void SetupDone();
77
78    //@
79    s3d_CUtilStr GetInfo();
80
81    //@
82    void RegisterNotif(s3d_CUtilNotifRecip *Recip);
83
84    //@
85    s3d_CEngShaderGfxPtr FindShaderGfx(
86            s3d_CUtilNotifGather *NotifGather, s3d_CEngGfxCtx *GfxCtx);
87
88private:
89    s3d_CEngShaderEnvPtr m_ShaderEnv;
90    gtp_ShaderCreateTexGfxTree m_ShaderGfxTree;
91    gtp_ShaderCreateTexDataPtr m_Data;
92};
93
94//@
95typedef s3d_CUtilPtr<gtp_ShaderCreateTex>
96        gtp_ShaderCreateTexPtr;
97
98///////////////////////////////////////////////////////////////////////////////
99
100//@
101class gtp_ShaderCreateTexGfx: public s3d_CEngShaderGfx
102{
103public:
104    //@
105    gtp_ShaderCreateTexGfx(
106            s3d_CEngShaderEnv *ShaderEnv,
107            s3d_CEngGfxCtx *GfxCtx,
108            gtp_ShaderCreateTexData *Data);
109
110    //@
111    gtp_ShaderCreateTexGfxTree::CNode *GetNode();
112
113    //@
114    void RegisterNotif(s3d_CUtilNotifRecip *Recip);
115
116    //@
117    void ExtractGfx();
118
119    //@
120    bool IsValid();
121
122    //@
123    void LinkCollect(s3d_CUtilAtomSet &VarAtomSet);
124
125    //@
126    void LinkAppoint(s3d_CDrvVarDecl *VarDecl);
127
128    //@
129    s3d_CEngShaderInstPtr CreateShaderInst(
130            s3d_CEngShaderHead *Head);
131
132private:
133    gtp_ShaderCreateTexGfxTree::CNode m_Node;
134    s3d_CEngShaderEnvPtr m_ShaderEnv;
135    gtp_ShaderCreateTexDataPtr m_Data;
136
137    // ShaderGfx-Data Variables:
138    s3d_CDrvVarSlotInit m_TexChanVarSlot;
139
140    friend class gtp_ShaderCreateTexInst;
141};
142
143//@
144typedef s3d_CUtilPtr<gtp_ShaderCreateTexGfx>
145        gtp_ShaderCreateTexGfxPtr;
146
147///////////////////////////////////////////////////////////////////////////////
148
149//@
150class gtp_ShaderCreateTexInst
151    : public s3d_CEngShaderInst,
152    public s3d_CEngShaderExec
153{
154public:
155    //@
156    gtp_ShaderCreateTexInst(
157            s3d_CEngShaderEnv *ShaderEnv,
158            gtp_ShaderCreateTexGfx *ShaderGfx);
159
160    //@
161    void RegisterNotif(s3d_CUtilNotifRecip *Recip);
162
163    //@
164    void SetShaderCtx(s3d_CEngShaderCtx *ShaderCtx);
165
166    //@
167    void SetGfxState(s3d_CEngGfxState *GfxState);
168
169    //@
170    void SetPos(s3d_CEngPos *Pos);
171
172    //@
173    void SetModel(s3d_CEngModel *Model);
174
175    //@
176    void ArrangeCollect(
177            s3d_CUtilMemPool *MemPool,
178            s3d_CEngShaderScopeArray &ScopeArray);
179
180    //@
181    void ArrangeInit(
182            s3d_CUtilMemPool *MemPool,
183            s3d_CEngShaderScopeArray_cr ScopeArray);
184
185    //@
186    void ArrangePerform(
187            s3d_CUtilMemPool *MemPool,
188            s3d_CEngShaderScopeArray_cr ScopeArray);
189
190    //@
191    void ArrangeFeedback(
192            s3d_CUtilMemPool *MemPool,
193            s3d_CEngShaderScopeArray_cr ScopeArray);
194
195    //@
196    void ArrangeGather(
197            s3d_CEngShaderExecArray &ExecArray);
198
199    //@
200    void ShaderExecPerform(
201            s3d_CEngShaderScope *Scope,
202            s3d_CUtilAtom *Method,
203            s3d_CEngGfxTaskArray &TaskArray);
204
205private:
206    void SetVars(
207            s3d_CUtilMemPool *MemPool, s3d_CEngShaderScope *Scope);
208
209    s3d_CEngShaderEnvPtr m_ShaderEnv;
210    gtp_ShaderCreateTexGfxPtr m_ShaderGfx;
211        s3d_CDrvGfxTexPtr m_TexGfx;
212   
213};
214
215///////////////////////////////////////////////////////////////////////////////
216
217#endif
Note: See TracBrowser for help on using the repository browser.