source: golgotha/src/maxtool/sdk_inc/stdmat.h @ 80

Last change on this file since 80 was 80, checked in by Sam Hocevar, 12 years ago
  • Adding the Golgotha source code. Not sure what's going to be interesting in there, but since it's all public domain, there's certainly stuff to pick up.
  • Property svn:keywords set to Id
File size: 10.2 KB
Line 
1/*******************************************************************
2 *
3 *    DESCRIPTION: Standard materials, textures, and fog: generic interface
4 *
5 *    AUTHOR:  Dan Silva
6 *
7 *    HISTORY:   Created 3/5/96
8 *
9 *******************************************************************/
10
11#ifndef __STDMAT__H
12#define __STDMAT_H
13
14// Shade values
15#define NSHADES         3
16#define SHADE_CONST     0
17#define SHADE_PHONG     1       
18#define SHADE_METAL     2
19
20// Transparency types
21#define TRANSP_SUBTRACTIVE      0
22#define TRANSP_ADDITIVE         1
23#define TRANSP_FILTER                   2
24
25#define NTEXMAPS 11
26
27// Texture map indices
28#define ID_AM 0   // ambient
29#define ID_DI 1   // diffuse
30#define ID_SP 2   // specular
31#define ID_SH 3   // shininesNs
32#define ID_SS 4   // shininess strength
33#define ID_SI 5   // self-illumination
34#define ID_OP 6   // opacity
35#define ID_FI 7   // filter color
36#define ID_BU 8   // bump
37#define ID_RL 9   // reflection
38#define ID_RR 10  // refraction
39
40class StdMat: public Mtl {
41        public:
42                virtual void SetShading(int s)=0;
43                virtual void SetSoften(BOOL onoff)=0;
44                virtual void SetFaceMap(BOOL onoff)=0;
45                virtual void SetTwoSided(BOOL onoff)=0;
46                virtual void SetWire(BOOL onoff)=0;
47                virtual void SetWireUnits(BOOL onOff)=0;
48                virtual void SetFalloffOut(BOOL onOff)=0;  // 1: out, 0: in
49                virtual void SetTransparencyType(int type)=0;
50                virtual void SetAmbient(Color c, TimeValue t)=0;               
51                virtual void SetDiffuse(Color c, TimeValue t)=0;               
52                virtual void SetSpecular(Color c, TimeValue t)=0;
53                virtual void SetFilter(Color c, TimeValue t)=0;
54                virtual void SetShininess(float v, TimeValue t)=0;             
55                virtual void SetShinStr(float v, TimeValue t)=0;               
56                virtual void SetSelfIllum(float v, TimeValue t)=0;             
57                virtual void SetOpacity(float v, TimeValue t)=0;               
58                virtual void SetOpacFalloff(float v, TimeValue t)=0;           
59                virtual void SetWireSize(float s, TimeValue t)=0;
60                virtual void SetIOR(float v, TimeValue t)=0;
61                virtual void LockAmbDiffTex(BOOL onOff)=0;
62                virtual void EnableMap(int i, BOOL onoff)=0;
63                virtual void SetTexmapAmt(int imap, float amt, TimeValue t)=0;
64
65                virtual int GetShading()=0;
66                virtual BOOL GetSoften()=0;
67                virtual BOOL GetFaceMap()=0;
68                virtual BOOL GetTwoSided()=0;
69                virtual BOOL GetWire()=0;
70                virtual BOOL GetWireUnits()=0;
71                virtual BOOL GetFalloffOut()=0;  // 1: out, 0: in
72                virtual int GetTransparencyType()=0;
73                virtual Color GetAmbient(TimeValue t)=0;               
74                virtual Color GetDiffuse(TimeValue t)=0;               
75                virtual Color GetSpecular(TimeValue t)=0;
76                virtual Color GetFilter(TimeValue t)=0;
77                virtual float GetShininess( TimeValue t)=0;             
78                virtual float GetShinStr(TimeValue t)=0;               
79                virtual float GetSelfIllum(TimeValue t)=0;             
80                virtual float GetOpacity( TimeValue t)=0;               
81                virtual float GetOpacFalloff(TimeValue t)=0;           
82                virtual float GetWireSize(TimeValue t)=0;
83                virtual float GetIOR( TimeValue t)=0;
84                virtual BOOL GetAmbDiffTexLock()=0;
85                virtual BOOL MapEnabled(int i)=0;
86                virtual float GetTexmapAmt(int imap, TimeValue t)=0;
87
88               
89        };
90
91// Mapping types for SetCoordMapping
92#define UVMAP_EXPLICIT   0
93#define UVMAP_SPHERE_ENV 1
94#define UVMAP_CYL_ENV    2
95#define UVMAP_SHRINK_ENV 3
96#define UVMAP_SCREEN_ENV 4
97
98class StdUVGen: public UVGen {
99        public:
100        virtual void SetCoordMapping(int)=0;
101        virtual void SetUOffs(float f, TimeValue t)=0;
102        virtual void SetVOffs(float f, TimeValue t)=0;
103        virtual void SetUScl(float f,  TimeValue t)=0;
104        virtual void SetVScl(float f,  TimeValue t)=0;
105        virtual void SetAng(float f,   TimeValue t)=0; // angle in radians
106        virtual void SetBlur(float f,  TimeValue t)=0;
107        virtual void SetBlurOffs(float f,  TimeValue t)=0;
108        virtual void SetNoiseAmt(float f,  TimeValue t)=0;
109        virtual void SetNoiseSize(float f,  TimeValue t)=0;
110        virtual void SetNoiseLev(int i,  TimeValue t)=0;
111        virtual void SetNoisePhs(float f,  TimeValue t)=0;
112        virtual void SetTextureTiling(int tiling)=0;
113
114        virtual int  GetCoordMapping(int)=0;
115        virtual float GetUOffs( TimeValue t)=0;
116        virtual float GetVOffs( TimeValue t)=0;
117        virtual float GetUScl(  TimeValue t)=0;
118        virtual float GetVScl(  TimeValue t)=0;
119        virtual float GetAng(   TimeValue t)=0; // angle in radians
120        virtual float GetBlur(  TimeValue t)=0;
121        virtual float GetBlurOffs(  TimeValue t)=0;
122        virtual float GetNoiseAmt(  TimeValue t)=0;
123        virtual float GetNoiseSize(  TimeValue t)=0;
124        virtual int GetNoiseLev( TimeValue t)=0;
125        virtual float GetNoisePhs(  TimeValue t)=0;
126        virtual int GetTextureTiling()=0;
127
128        };
129
130// Image filtering types
131#define FILTER_PYR     0
132#define FILTER_SAT     1
133#define FILTER_NADA        2
134
135// Alpha source types
136#define ALPHA_FILE      0
137#define ALPHA_RGB       2
138#define ALPHA_NONE      3
139
140// End conditions:
141#define END_LOOP     0
142#define END_PINGPONG 1
143#define END_HOLD     2
144
145class BitmapTex: public Texmap {
146        public:
147        virtual void SetFilterType(int ft)=0;
148        virtual void SetAlphaSource(int as)=0; 
149        virtual void SetEndCondition(int endcond)=0;
150        virtual void SetAlphaAsMono(BOOL onoff)=0;
151        virtual void SetMapName(TCHAR *name)=0;
152        virtual void SetStartTime(TimeValue t)=0;
153        virtual void SetPlaybackRate(float r)=0;
154
155        virtual int GetFilterType()=0;
156        virtual int GetAlphaSource()=0;
157        virtual int GetEndCondition()=0;
158        virtual BOOL GetAlphaAsMono(BOOL onoff)=0;
159        virtual TCHAR *GetMapName()=0;
160        virtual TimeValue GetStartTime()=0;
161        virtual float GetPlaybackRate()=0;
162
163        virtual StdUVGen* GetUVGen()=0;
164        virtual TextureOutput* GetTexout()=0;
165        };
166
167class MultiMtl: public Mtl {
168        public:
169        virtual void SetNumSubMtls(int n)=0;
170        };
171
172class Tex3D: public Texmap {
173        public:
174        virtual void ReadSXPData(TCHAR *name, void *sxpdata)=0;
175        };
176
177class MultiTex: public Texmap {
178        public:
179        virtual void SetNumSubTexmaps(int n) {}
180        virtual void SetColor(int i, Color c, TimeValue t=0){}
181        };
182
183class GradTex: public MultiTex {
184        public:
185        virtual StdUVGen* GetUVGen()=0;
186        virtual TextureOutput* GetTexout()=0;
187        virtual void SetMidPoint(float m, TimeValue t=0) {}
188        };
189
190
191//===============================================================================
192// StdCubic
193//===============================================================================
194class StdCubic: public Texmap {
195        public:
196        virtual void SetSize(int n, TimeValue t)=0;
197        virtual void SetDoNth(BOOL onoff)=0;
198        virtual void SetNth(int n)=0;
199        virtual void SetApplyBlur(BOOL onoff)=0;
200        virtual void SetBlur(float b, TimeValue t)=0;
201        virtual void SetBlurOffset(float b, TimeValue t)=0;
202        virtual int GetSize(TimeValue t)=0;
203        virtual BOOL GetDoNth()=0;
204        virtual int GetNth()=0;
205        virtual BOOL GetApplyBlur()=0;
206        virtual float GetBlur(TimeValue t)=0;
207        virtual float GetBlurOffset(TimeValue t)=0;
208        };
209
210//===============================================================================
211// StdMirror
212//===============================================================================
213class StdMirror: public Texmap {
214        public:
215        virtual void SetDoNth(BOOL onoff)=0;
216        virtual void SetNth(int n)=0;
217        virtual void SetApplyBlur(BOOL onoff)=0;
218        virtual void SetBlur(float b, TimeValue t)=0;
219        virtual BOOL GetDoNth()=0;
220        virtual int GetNth()=0;
221        virtual BOOL GetApplyBlur()=0;
222        virtual float GetBlur(TimeValue t)=0;
223        };
224
225//===============================================================================
226// StdFog
227//===============================================================================
228
229// Fallof Types
230#define FALLOFF_TOP             0
231#define FALLOFF_BOTTOM  1
232#define FALLOFF_NONE    2
233
234class StdFog : public Atmospheric {
235        public:
236        virtual void SetColor(Color c, TimeValue t)=0;
237        virtual void SetUseMap(BOOL onoff)=0;
238        virtual void SetUseOpac(BOOL onoff)=0;
239        virtual void SetColorMap(Texmap *tex)=0;
240        virtual void SetOpacMap(Texmap *tex)=0;
241        virtual void SetFogBackground(BOOL onoff)=0;
242        virtual void SetType(int type)=0;  // 0:Regular, 1:Layered
243        virtual void SetNear(float v, TimeValue t)=0;
244        virtual void SetFar(float v, TimeValue t)=0;
245        virtual void SetTop(float v, TimeValue t)=0;
246        virtual void SetBottom(float v, TimeValue t)=0;
247        virtual void SetDensity(float v, TimeValue t)=0;
248        virtual void SetFalloffType(int tv)=0;
249        virtual void SetUseNoise(BOOL onoff)=0;
250        virtual void SetNoiseScale(float v, TimeValue t)=0;
251        virtual void SetNoiseAngle(float v, TimeValue t)=0;
252        virtual void SetNoisePhase(float v, TimeValue t)=0;
253
254        virtual Color GetColor(TimeValue t)=0;
255        virtual BOOL GetUseMap()=0;
256        virtual BOOL GetUseOpac()=0;
257        virtual Texmap *GetColorMap()=0;
258        virtual Texmap *GetOpacMap()=0;
259        virtual BOOL GetFogBackground()=0;
260        virtual int GetType()=0;  // 0:Regular, 1:Layered
261        virtual float GetNear(TimeValue t)=0;
262        virtual float GetFar(TimeValue t)=0;
263        virtual float GetTop(TimeValue t)=0;
264        virtual float GetBottom(TimeValue t)=0;
265        virtual float GetDensity(TimeValue t)=0;
266        virtual int GetFalloffType()=0;
267        virtual BOOL GetUseNoise()=0;
268        virtual float GetNoiseScale( TimeValue t)=0;
269        virtual float GetNoiseAngle( TimeValue t)=0;
270        virtual float GetNoisePhase( TimeValue t)=0;
271
272        };
273
274
275// Subclasses of Tex3D call this on loading to register themselves
276// as being able to read sxpdata for sxpName.  (name includes ".SXP")
277CoreExport void RegisterSXPReader(TCHAR *sxpName, Class_ID cid);
278
279// When importing, this is called to get a "reader" for the sxp being loaded.
280CoreExport Tex3D *GetSXPReaderClass(TCHAR *sxpName);
281
282//==========================================================================
283// Create new instances of the standard materials, textures, and atmosphere
284//==========================================================================
285CoreExport StdMat *NewDefaultStdMat();
286CoreExport BitmapTex *NewDefaultBitmapTex();
287CoreExport MultiMtl *NewDefaultMultiMtl();
288CoreExport MultiTex *NewDefaultCompositeTex();
289CoreExport MultiTex *NewDefaultMixTex();
290CoreExport MultiTex *NewDefaultTintTex();
291CoreExport GradTex *NewDefaultGradTex();
292CoreExport StdCubic *NewDefaultStdCubic();
293CoreExport StdMirror *NewDefaultStdMirror();
294CoreExport StdFog *NewDefaultStdFog();
295
296#endif
Note: See TracBrowser for help on using the repository browser.