Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
mapper.h
Go to the documentation of this file.
1/*
2** Command & Conquer Generals Zero Hour(tm)
3** Copyright 2025 Electronic Arts Inc.
4**
5** This program is free software: you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation, either version 3 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19/***************************************************************************
20 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
21 ***************************************************************************
22 * *
23 * Project Name : G *
24 * *
25 * $Archive:: /Commando/Code/ww3d2/mapper.h $*
26 * *
27 * $Org Author:: Greg_h $*
28 * *
29 * $Author:: Kenny Mitchell *
30 * *
31 * $Modtime:: 06/26/02 4:04p $*
32 * *
33 * $Revision:: 26 $*
34 * *
35 * 06/26/02 KM Matrix name change to avoid MAX conflicts *
36 *-------------------------------------------------------------------------*
37 * Functions: *
38 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39
40#if defined(_MSC_VER)
41#pragma once
42#endif
43
44#ifndef VERTEXMAPPER_H
45#define VERTEXMAPPER_H
46
47#include "refcount.h"
48#include "w3d_file.h"
49#include "w3derr.h"
50#include "wwdebug.h"
51#include "vector2.h"
52#include "vector3.h"
53#include "ww3d.h"
54#include "matrix4.h"
55
56class INIClass;
57
58/*
59** TextureMapperClass
60** Base class for all texture mappers.
61*/
63{
64 public:
65
66 enum {
90 };
91
92 TextureMapperClass(unsigned int stage=0);
94
95 virtual ~TextureMapperClass(void) { }
96
97 virtual int Mapper_ID(void) const { return MAPPER_ID_UNKNOWN;}
98
99 virtual TextureMapperClass * Clone(void) const = 0;
100
101 virtual bool Is_Time_Variant(void) { return false; }
102 virtual void Apply(int uv_array_index) = 0;
103 virtual void Reset(void) { }
104 virtual bool Needs_Normals(void) { return false; }
105 void Set_Stage(int stage) { Stage = stage; }
106 int Get_Stage(void) const { return Stage; }
107
108 // This is called by Apply(). It should not be called externally except
109 // in unusual circumstances.
110 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix) = 0;
111
112 protected:
113 unsigned int Stage;
114};
115
116/*
117** ScaleTextureMapperClass
118** Scales UV coordinates
119*/
121{
123public:
124 ScaleTextureMapperClass(const Vector2 &scale, unsigned int stage);
125 ScaleTextureMapperClass(const INIClass &ini, const char *section, unsigned int stage);
127
128 virtual int Mapper_ID(void) const { return MAPPER_ID_SCALE;}
129
130 virtual TextureMapperClass *Clone(void) const { return NEW_REF( ScaleTextureMapperClass, (*this)); }
131
132 virtual void Apply(int uv_array_index);
133 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
134
135protected:
136 Vector2 Scale; // Scale
137};
138
139/*
140** LinearOffsetTextureMapperClass
141** Modifies the UV coordinates by a linear offset
142*/
144{
146public:
147 LinearOffsetTextureMapperClass(const Vector2 &offset_per_sec, const Vector2 & start_offset,
148 bool clamp_fix, const Vector2 &scale, unsigned int stage);
149 LinearOffsetTextureMapperClass(const INIClass &ini, const char *section, unsigned int stage);
151
152 virtual int Mapper_ID(void) const { return MAPPER_ID_LINEAR_OFFSET;}
153
154 virtual TextureMapperClass *Clone(void) const { return NEW_REF( LinearOffsetTextureMapperClass, (*this)); }
155
156 virtual bool Is_Time_Variant(void) { return true; }
157
158 virtual void Reset(void);
159 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
160
162 CurrentUVOffset = cur;
163 }
164 void Set_UV_Offset_Delta(const Vector2 &per_sec) {
165 UVOffsetDeltaPerMS = per_sec;
166 UVOffsetDeltaPerMS *= -0.001f;
167 }
169 { cur= CurrentUVOffset;
170 }
171 void Set_LastUsedSyncTime(unsigned int time) { LastUsedSyncTime = time;}
172 unsigned int Get_LastUsedSyncTime() { return LastUsedSyncTime;}
173
174protected:
175 Vector2 CurrentUVOffset; // Current UV offset
176 Vector2 UVOffsetDeltaPerMS; // Amount to increase offset each millisec
177 unsigned int LastUsedSyncTime; // Sync time last used to update offset
178 Vector2 StartingUVOffset; // Need to store this for copy constructors
179 bool ClampFix; // Restrict the offset in a correct manner for clamped textures
180};
181
182/*
183** GridTextureMapperClass
184** Animates a texture by divving it up into a grid and using those offsets
185*/
187{
189public:
190 GridTextureMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, unsigned int stage);
191 GridTextureMapperClass(const INIClass &ini, const char *section, unsigned int stage);
193
194 virtual int Mapper_ID(void) const { return MAPPER_ID_GRID;}
195
196 virtual TextureMapperClass *Clone(void) const { return NEW_REF( GridTextureMapperClass, (*this)); }
197
198 virtual bool Is_Time_Variant(void) { return true; }
199 virtual void Apply(int uv_array_index);
200 virtual void Reset(void);
201 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
202
203 void Set_Frame(unsigned int frame) { CurrentFrame=frame; }
204 void Set_Frame_Per_Second(float fps);
205
206protected:
207 // Utility functions
208 void initialize(float fps, unsigned int gridwidth_log2);
209 void update_temporal_state(void);
210 void calculate_uv_offset(float * u_offset, float * v_offset);
211
212 // Constant properties
213 int Sign; // +1 if frame rate positive, -1 otherwise
214 unsigned int MSPerFrame; // milliseconds per frame
215 float OOGridWidth; // 1.0f / size of the side of the grid)
216 unsigned int GridWidthLog2; // log base 2 of size of the side of the grid
217 unsigned int LastFrame; // Last frame to use
218 unsigned int Offset; // Only affects initialization, but need to store it for copy CTors to work
219
220 // Temporal state
221 unsigned int Remainder; // used for timing calculations
222 unsigned int CurrentFrame; // current frame
223 unsigned int LastUsedSyncTime; // Sync time last used to update offset
224};
225
226/*
227** RotateTextureMapperClass
228** Modifies the textures over time
229*/
231{
233public:
234 RotateTextureMapperClass(float rad_per_sec, const Vector2& center, const Vector2 &scale, unsigned int stage);
235 RotateTextureMapperClass(const INIClass &ini, const char *section, unsigned int stage);
237
238 virtual int Mapper_ID(void) const { return MAPPER_ID_ROTATE;}
239
240 virtual TextureMapperClass *Clone(void) const { return NEW_REF( RotateTextureMapperClass, (*this)); }
241
242 virtual bool Is_Time_Variant(void) { return true; }
243 virtual void Reset(void);
244 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
245
246private:
247 float CurrentAngle;
248 float RadiansPerMilliSec;
249 Vector2 Center;
250 unsigned int LastUsedSyncTime; // Sync time last used to update offset
251};
252
253/*
254** SineLinearOffsetTextureMapperClass
255** Modifies the UV coodinates by a sine linear offset
256*/
258{
260public:
261 SineLinearOffsetTextureMapperClass(const Vector3 &uafp, const Vector3 &vafp, const Vector2 &scale, unsigned int stage);
262 SineLinearOffsetTextureMapperClass(const INIClass &ini, const char *section, unsigned int stage);
264
265 virtual int Mapper_ID(void) const { return MAPPER_ID_SINE_LINEAR_OFFSET;}
266
267 virtual TextureMapperClass *Clone(void) const { return NEW_REF( SineLinearOffsetTextureMapperClass, (*this)); }
268
269 virtual bool Is_Time_Variant(void) { return true; }
270 virtual void Reset(void);
271 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
272
273private:
274 Vector3 UAFP; // U Coordinate Amplitude frequency phase
275 Vector3 VAFP; // V Coordinate Amplitude frequency phase
276 float CurrentAngle;
277 unsigned int LastUsedSyncTime; // Sync time last used to update offset
278};
279
280/*
281** StepLinearOffsetTextureMapperClass
282** Modifies the UV coodinates by a Step linear offset
283*/
285{
287public:
288 StepLinearOffsetTextureMapperClass(const Vector2 &step, float steps_per_sec, bool clamp_fix,
289 const Vector2 &scale, unsigned int stage);
290 StepLinearOffsetTextureMapperClass(const INIClass &ini, const char *section, unsigned int stage);
292
293 virtual int Mapper_ID(void) const { return MAPPER_ID_STEP_LINEAR_OFFSET;}
294
295 virtual TextureMapperClass *Clone(void) const { return NEW_REF( StepLinearOffsetTextureMapperClass, (*this)); }
296
297 virtual bool Is_Time_Variant(void) { return true; }
298 virtual void Reset(void);
299 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
300
301private:
302 Vector2 Step; // Size of step
303 float StepsPerMilliSec; // Steps per millisecond
304 Vector2 CurrentStep; // Current step
305 float Remainder; // Remainder time
306 unsigned int LastUsedSyncTime; // Sync time last used to update offset
307 bool ClampFix; // Restrict the offset in a correct manner for clamped textures
308};
309
310/*
311** ZigZagLinearOffsetTextureMapperClass
312** Modifies the UV coodinates by a ZigZag linear offset
313*/
315{
317public:
318 ZigZagLinearOffsetTextureMapperClass(const Vector2 &speed, float period, const Vector2 &scale, unsigned int stage);
319 ZigZagLinearOffsetTextureMapperClass(const INIClass &ini, const char *section, unsigned int stage);
321
322 virtual int Mapper_ID(void) const { return MAPPER_ID_ZIGZAG_LINEAR_OFFSET;}
323
324 virtual TextureMapperClass *Clone(void) const { return NEW_REF( ZigZagLinearOffsetTextureMapperClass, (*this)); }
325
326 virtual bool Is_Time_Variant(void) { return true; }
327 virtual void Reset(void);
328 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
329
330private:
331 Vector2 Speed; // Speed of zigzag in units per millisecond
332 float Period; // Time taken for a period in milliseconds
333 float Half_Period; // Half of period
334 float Remainder; // Remainder time in milliseconds
335 unsigned int LastUsedSyncTime; // Sync time last used to update offset
336};
337
338// ----------------------------------------------------------------------------
339//
340// Environment Mapper calculates the texture coordinates based on
341// transformed normals
342//
343// ----------------------------------------------------------------------------
344
346{
348public:
349 ClassicEnvironmentMapperClass(unsigned int stage) : TextureMapperClass(stage) { }
351 virtual int Mapper_ID(void) const { return MAPPER_ID_CLASSIC_ENVIRONMENT;}
352 virtual TextureMapperClass* Clone() const { return NEW_REF( ClassicEnvironmentMapperClass, (*this)); }
353 virtual void Apply(int uv_array_index);
354 virtual bool Needs_Normals(void) { return true; }
355 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
356};
357
359{
361public:
362 EnvironmentMapperClass(unsigned int stage) : TextureMapperClass(stage) { }
364 virtual int Mapper_ID(void) const { return MAPPER_ID_ENVIRONMENT;}
365 virtual TextureMapperClass* Clone() const { return NEW_REF( EnvironmentMapperClass, (*this)); }
366 virtual void Apply(int uv_array_index);
367 virtual bool Needs_Normals(void) { return true; }
368 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
369};
370
372{
374public:
375 EdgeMapperClass(unsigned int stage);
376 EdgeMapperClass(const INIClass &ini, const char *section, unsigned int stage);
377 EdgeMapperClass(const EdgeMapperClass & src);
378 virtual int Mapper_ID(void) const { return MAPPER_ID_EDGE;}
379 virtual TextureMapperClass* Clone() const { return NEW_REF( EdgeMapperClass, (*this)); }
380 virtual void Apply(int uv_array_index);
381 virtual void Reset(void);
382 virtual bool Is_Time_Variant(void) { return true; }
383 virtual bool Needs_Normals(void) { return true; }
384 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
385
386protected:
387 unsigned int LastUsedSyncTime; // Sync time last used to update offset
390};
391
393{
394public:
396 WSEnvMapperClass(AxisType axis, unsigned int stage) : TextureMapperClass(stage), Axis(axis) { }
398 WSEnvMapperClass(const INIClass &ini, const char *section, unsigned int stage);
399 virtual bool Needs_Normals(void) { return true; }
400 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
401protected:
403};
404
406{
408public:
409 WSClassicEnvironmentMapperClass(AxisType axis, unsigned int stage) : WSEnvMapperClass(axis, stage) { }
411 WSClassicEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage) : WSEnvMapperClass(ini, section, stage) { }
412 virtual int Mapper_ID(void) const { return MAPPER_ID_WS_CLASSIC_ENVIRONMENT;}
413 virtual TextureMapperClass* Clone() const { return NEW_REF( WSClassicEnvironmentMapperClass, (*this)); }
414 virtual void Apply(int uv_array_index);
415};
416
418{
420public:
421 WSEnvironmentMapperClass(AxisType axis, unsigned int stage) : WSEnvMapperClass(axis, stage) { }
423 WSEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage) : WSEnvMapperClass(ini, section, stage) { }
424 virtual int Mapper_ID(void) const { return MAPPER_ID_WS_ENVIRONMENT;}
425 virtual TextureMapperClass* Clone() const { return NEW_REF( WSEnvironmentMapperClass, (*this)); }
426 virtual void Apply(int uv_array_index);
427};
428
430{
432public:
433 GridClassicEnvironmentMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, unsigned int stage) : GridTextureMapperClass(fps, gridwidth_log2, last_frame, offset, stage) { }
434 GridClassicEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage) : GridTextureMapperClass(ini, section, stage) { }
436 virtual int Mapper_ID(void) const { return MAPPER_ID_GRID_CLASSIC_ENVIRONMENT;}
438 virtual void Apply(int uv_array_index);
439 virtual bool Needs_Normals(void) { return true; }
440 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
441};
442
444{
446public:
447 GridEnvironmentMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, unsigned int stage) : GridTextureMapperClass(fps, gridwidth_log2, last_frame, offset, stage) { }
448 GridEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage) : GridTextureMapperClass(ini, section, stage) { }
450 virtual int Mapper_ID(void) const { return MAPPER_ID_GRID_ENVIRONMENT;}
451 virtual TextureMapperClass* Clone() const { return NEW_REF( GridEnvironmentMapperClass, (*this)); }
452 virtual void Apply(int uv_array_index);
453 virtual bool Needs_Normals(void) { return true; }
454 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
455};
456
457// ----------------------------------------------------------------------------
458//
459// Screen Mapper calculates texture coordinates based on the projected screen
460// coordinates of vertices
461//
462// ----------------------------------------------------------------------------
464{
466public:
467 ScreenMapperClass(const Vector2 &offset_per_sec, const Vector2 & start_offset, bool clamp_fix,
468 const Vector2 &scale, unsigned int stage) : LinearOffsetTextureMapperClass(offset_per_sec, start_offset, clamp_fix, scale, stage) { }
469 ScreenMapperClass(const INIClass &ini, const char *section, unsigned int stage) : LinearOffsetTextureMapperClass(ini, section, stage) { }
471 virtual int Mapper_ID(void) const { return MAPPER_ID_SCREEN;}
472 virtual TextureMapperClass* Clone() const { return NEW_REF( ScreenMapperClass, (*this)); }
473 virtual void Apply(int uv_array_index);
474 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
475};
476
482{
484public:
485 RandomTextureMapperClass(float fps, const Vector2 &scale, unsigned int stage);
486 RandomTextureMapperClass(const INIClass &ini, const char *section, unsigned int stage);
488
489 virtual int Mapper_ID(void) const { return MAPPER_ID_RANDOM;}
490
491 virtual TextureMapperClass *Clone(void) const { return NEW_REF( RandomTextureMapperClass, (*this)); }
492
493 virtual bool Is_Time_Variant(void) { return true; }
494 virtual void Reset(void);
495 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
496
497protected:
498 void randomize(void);
499 float FPMS; // frames per millisecond
500 float Remainder; // remaining time
504 unsigned int LastUsedSyncTime; // Sync time last used to update offset
505};
506
513{
515public:
516 BumpEnvTextureMapperClass(float rad_per_sec, float scale_factor, const Vector2 & offset_per_sec,
517 const Vector2 & start_offset, bool clamp_fix, const Vector2 &scale, unsigned int stage);
518 BumpEnvTextureMapperClass(INIClass &ini, char *section, unsigned int stage);
520
521 virtual int Mapper_ID(void) const { return MAPPER_ID_BUMPENV;}
522
523 virtual TextureMapperClass *Clone(void) const { return NEW_REF( BumpEnvTextureMapperClass, (*this)); }
524
525 virtual void Apply(int uv_array_index);
526
527protected:
528
529 unsigned int LastUsedSyncTime; // Sync time last used to update offset
533};
534
536{
537public:
539 GridWSEnvMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, AxisType axis, unsigned int stage);
541 GridWSEnvMapperClass(const INIClass &ini, const char *section, unsigned int stage);
542 virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix);
543 virtual bool Needs_Normals(void) { return true; }
544protected:
546};
547
549{
550public:
551 GridWSClassicEnvironmentMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, AxisType axis, unsigned int stage);
552 GridWSClassicEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage);
554 virtual int Mapper_ID(void) const { return MAPPER_ID_GRID_WS_CLASSIC_ENVIRONMENT;}
556 virtual void Apply(int uv_array_index);
557};
558
560{
561public:
562 GridWSEnvironmentMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, AxisType axis, unsigned int stage);
563 GridWSEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage);
565 virtual int Mapper_ID(void) const { return MAPPER_ID_GRID_WS_ENVIRONMENT;}
566 virtual TextureMapperClass* Clone() const { return NEW_REF( GridWSEnvironmentMapperClass, (*this)); }
567 virtual void Apply(int uv_array_index);
568};
569
570
571/*
572** Utility functions
573*/
574void Reset_All_Texture_Mappers(RenderObjClass *robj, bool make_unique);
575
576#endif
Color scale(const Color &a, const Color &b)
Definition GameMtl.cpp:722
#define W3DMPO_GLUE(ARGCLASS)
Definition always.h:120
BumpEnvTextureMapperClass(float rad_per_sec, float scale_factor, const Vector2 &offset_per_sec, const Vector2 &start_offset, bool clamp_fix, const Vector2 &scale, unsigned int stage)
Definition mapper.cpp:1032
unsigned int LastUsedSyncTime
Definition mapper.h:529
virtual int Mapper_ID(void) const
Definition mapper.h:521
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:523
virtual void Apply(int uv_array_index)
Definition mapper.cpp:1061
virtual bool Needs_Normals(void)
Definition mapper.h:354
ClassicEnvironmentMapperClass(unsigned int stage)
Definition mapper.h:349
virtual int Mapper_ID(void) const
Definition mapper.h:351
virtual TextureMapperClass * Clone() const
Definition mapper.h:352
ClassicEnvironmentMapperClass(const ClassicEnvironmentMapperClass &src)
Definition mapper.h:350
virtual void Apply(int uv_array_index)
Definition mapper.cpp:621
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:636
float VOffset
Definition mapper.h:388
virtual int Mapper_ID(void) const
Definition mapper.h:378
bool UseReflect
Definition mapper.h:389
virtual bool Is_Time_Variant(void)
Definition mapper.h:382
virtual TextureMapperClass * Clone() const
Definition mapper.h:379
virtual void Reset(void)
Definition mapper.cpp:721
virtual bool Needs_Normals(void)
Definition mapper.h:383
unsigned int LastUsedSyncTime
Definition mapper.h:387
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:727
virtual void Apply(int uv_array_index)
Definition mapper.cpp:703
EdgeMapperClass(unsigned int stage)
Definition mapper.cpp:673
EnvironmentMapperClass(unsigned int stage)
Definition mapper.h:362
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:662
EnvironmentMapperClass(const EnvironmentMapperClass &src)
Definition mapper.h:363
virtual TextureMapperClass * Clone() const
Definition mapper.h:365
virtual void Apply(int uv_array_index)
Definition mapper.cpp:647
virtual int Mapper_ID(void) const
Definition mapper.h:364
virtual bool Needs_Normals(void)
Definition mapper.h:367
virtual int Mapper_ID(void) const
Definition mapper.h:436
GridClassicEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage)
Definition mapper.h:434
virtual void Apply(int uv_array_index)
Definition mapper.cpp:835
virtual bool Needs_Normals(void)
Definition mapper.h:439
virtual TextureMapperClass * Clone() const
Definition mapper.h:437
GridClassicEnvironmentMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, unsigned int stage)
Definition mapper.h:433
GridClassicEnvironmentMapperClass(const GridTextureMapperClass &src)
Definition mapper.h:435
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:849
virtual TextureMapperClass * Clone() const
Definition mapper.h:451
GridEnvironmentMapperClass(const GridTextureMapperClass &src)
Definition mapper.h:449
GridEnvironmentMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, unsigned int stage)
Definition mapper.h:447
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:878
virtual int Mapper_ID(void) const
Definition mapper.h:450
virtual bool Needs_Normals(void)
Definition mapper.h:453
virtual void Apply(int uv_array_index)
Definition mapper.cpp:864
GridEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage)
Definition mapper.h:448
void Set_Frame(unsigned int frame)
Definition mapper.h:203
void update_temporal_state(void)
Definition mapper.cpp:299
virtual void Apply(int uv_array_index)
Definition mapper.cpp:226
void initialize(float fps, unsigned int gridwidth_log2)
Definition mapper.cpp:272
unsigned int Offset
Definition mapper.h:218
virtual bool Is_Time_Variant(void)
Definition mapper.h:198
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:196
void calculate_uv_offset(float *u_offset, float *v_offset)
Definition mapper.cpp:317
unsigned int LastFrame
Definition mapper.h:217
unsigned int GridWidthLog2
Definition mapper.h:216
void Set_Frame_Per_Second(float fps)
Definition mapper.cpp:267
unsigned int MSPerFrame
Definition mapper.h:214
virtual void Reset(void)
Definition mapper.cpp:240
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:251
unsigned int CurrentFrame
Definition mapper.h:222
unsigned int LastUsedSyncTime
Definition mapper.h:223
GridTextureMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, unsigned int stage)
Definition mapper.cpp:196
unsigned int Remainder
Definition mapper.h:221
virtual int Mapper_ID(void) const
Definition mapper.h:194
virtual TextureMapperClass * Clone() const
Definition mapper.h:555
virtual int Mapper_ID(void) const
Definition mapper.h:554
virtual void Apply(int uv_array_index)
Definition mapper.cpp:1229
GridWSClassicEnvironmentMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, AxisType axis, unsigned int stage)
Definition mapper.cpp:1214
GridWSEnvMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, AxisType axis, unsigned int stage)
Definition mapper.cpp:1116
virtual bool Needs_Normals(void)
Definition mapper.h:543
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:1153
virtual void Apply(int uv_array_index)
Definition mapper.cpp:1273
virtual int Mapper_ID(void) const
Definition mapper.h:565
virtual TextureMapperClass * Clone() const
Definition mapper.h:566
GridWSEnvironmentMapperClass(float fps, unsigned int gridwidth_log2, unsigned int last_frame, unsigned int offset, AxisType axis, unsigned int stage)
Definition mapper.cpp:1258
Definition INI.H:80
virtual void Reset(void)
Definition mapper.cpp:151
virtual int Mapper_ID(void) const
Definition mapper.h:152
unsigned int Get_LastUsedSyncTime()
Definition mapper.h:172
void Get_Current_UV_Offset(Vector2 &cur)
Definition mapper.h:168
void Set_Current_UV_Offset(const Vector2 &cur)
Definition mapper.h:161
LinearOffsetTextureMapperClass(const Vector2 &offset_per_sec, const Vector2 &start_offset, bool clamp_fix, const Vector2 &scale, unsigned int stage)
Definition mapper.cpp:110
void Set_UV_Offset_Delta(const Vector2 &per_sec)
Definition mapper.h:164
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:157
virtual bool Is_Time_Variant(void)
Definition mapper.h:156
void Set_LastUsedSyncTime(unsigned int time)
Definition mapper.h:171
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:154
unsigned int LastUsedSyncTime
Definition mapper.h:177
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:491
virtual bool Is_Time_Variant(void)
Definition mapper.h:493
virtual int Mapper_ID(void) const
Definition mapper.h:489
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:990
virtual void Reset(void)
Definition mapper.cpp:984
unsigned int LastUsedSyncTime
Definition mapper.h:504
RandomTextureMapperClass(float fps, const Vector2 &scale, unsigned int stage)
Definition mapper.cpp:946
RefCountClass(void)
Definition refcount.h:108
virtual int Mapper_ID(void) const
Definition mapper.h:238
RotateTextureMapperClass(float rad_per_sec, const Vector2 &center, const Vector2 &scale, unsigned int stage)
Definition mapper.cpp:329
virtual bool Is_Time_Variant(void)
Definition mapper.h:242
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:363
virtual void Reset(void)
Definition mapper.cpp:357
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:240
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:102
virtual int Mapper_ID(void) const
Definition mapper.h:128
ScaleTextureMapperClass(const Vector2 &scale, unsigned int stage)
Definition mapper.cpp:69
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:130
virtual void Apply(int uv_array_index)
Definition mapper.cpp:88
virtual TextureMapperClass * Clone() const
Definition mapper.h:472
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:907
ScreenMapperClass(const INIClass &ini, const char *section, unsigned int stage)
Definition mapper.h:469
ScreenMapperClass(const ScreenMapperClass &src)
Definition mapper.h:470
virtual void Apply(int uv_array_index)
Definition mapper.cpp:893
ScreenMapperClass(const Vector2 &offset_per_sec, const Vector2 &start_offset, bool clamp_fix, const Vector2 &scale, unsigned int stage)
Definition mapper.h:467
virtual int Mapper_ID(void) const
Definition mapper.h:471
SineLinearOffsetTextureMapperClass(const Vector3 &uafp, const Vector3 &vafp, const Vector2 &scale, unsigned int stage)
Definition mapper.cpp:389
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:427
virtual int Mapper_ID(void) const
Definition mapper.h:265
virtual bool Is_Time_Variant(void)
Definition mapper.h:269
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:267
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:295
StepLinearOffsetTextureMapperClass(const Vector2 &step, float steps_per_sec, bool clamp_fix, const Vector2 &scale, unsigned int stage)
Definition mapper.cpp:453
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:495
virtual bool Is_Time_Variant(void)
Definition mapper.h:297
virtual int Mapper_ID(void) const
Definition mapper.h:293
virtual bool Needs_Normals(void)
Definition mapper.h:104
virtual ~TextureMapperClass(void)
Definition mapper.h:95
void Set_Stage(int stage)
Definition mapper.h:105
virtual int Mapper_ID(void) const
Definition mapper.h:97
virtual bool Is_Time_Variant(void)
Definition mapper.h:101
virtual void Apply(int uv_array_index)=0
int Get_Stage(void) const
Definition mapper.h:106
TextureMapperClass(const TextureMapperClass &src)
Definition mapper.h:93
virtual TextureMapperClass * Clone(void) const =0
unsigned int Stage
Definition mapper.h:113
@ MAPPER_ID_GRID_CLASSIC_ENVIRONMENT
Definition mapper.h:83
@ MAPPER_ID_LINEAR_OFFSET
Definition mapper.h:68
@ MAPPER_ID_SINE_LINEAR_OFFSET
Definition mapper.h:78
@ MAPPER_ID_WS_CLASSIC_ENVIRONMENT
Definition mapper.h:81
@ MAPPER_ID_CLASSIC_ENVIRONMENT
Definition mapper.h:69
@ MAPPER_ID_ZIGZAG_LINEAR_OFFSET
Definition mapper.h:80
@ MAPPER_ID_GRID_WS_ENVIRONMENT
Definition mapper.h:89
@ MAPPER_ID_GRID_WS_CLASSIC_ENVIRONMENT
Definition mapper.h:88
@ MAPPER_ID_STEP_LINEAR_OFFSET
Definition mapper.h:79
@ MAPPER_ID_GRID_ENVIRONMENT
Definition mapper.h:84
@ MAPPER_ID_WS_ENVIRONMENT
Definition mapper.h:82
TextureMapperClass(unsigned int stage=0)
Definition mapper.cpp:60
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)=0
virtual void Reset(void)
Definition mapper.h:103
WSClassicEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage)
Definition mapper.h:411
virtual int Mapper_ID(void) const
Definition mapper.h:412
virtual void Apply(int uv_array_index)
Definition mapper.cpp:805
virtual TextureMapperClass * Clone() const
Definition mapper.h:413
WSClassicEnvironmentMapperClass(const WSClassicEnvironmentMapperClass &src)
Definition mapper.h:410
WSClassicEnvironmentMapperClass(AxisType axis, unsigned int stage)
Definition mapper.h:409
virtual bool Needs_Normals(void)
Definition mapper.h:399
WSEnvMapperClass(const WSEnvMapperClass &src)
Definition mapper.h:397
WSEnvMapperClass(AxisType axis, unsigned int stage)
Definition mapper.h:396
AxisType Axis
Definition mapper.h:402
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:770
virtual TextureMapperClass * Clone() const
Definition mapper.h:425
virtual int Mapper_ID(void) const
Definition mapper.h:424
WSEnvironmentMapperClass(const WSClassicEnvironmentMapperClass &src)
Definition mapper.h:422
virtual void Apply(int uv_array_index)
Definition mapper.cpp:820
WSEnvironmentMapperClass(AxisType axis, unsigned int stage)
Definition mapper.h:421
WSEnvironmentMapperClass(const INIClass &ini, const char *section, unsigned int stage)
Definition mapper.h:423
virtual TextureMapperClass * Clone(void) const
Definition mapper.h:324
virtual int Mapper_ID(void) const
Definition mapper.h:322
ZigZagLinearOffsetTextureMapperClass(const Vector2 &speed, float period, const Vector2 &scale, unsigned int stage)
Definition mapper.cpp:537
virtual void Calculate_Texture_Matrix(Matrix4x4 &tex_matrix)
Definition mapper.cpp:577
virtual bool Is_Time_Variant(void)
Definition mapper.h:326
void Reset_All_Texture_Mappers(RenderObjClass *robj, bool make_unique)
Definition mapper.cpp:1087
#define NEW_REF(C, P)
Definition refcount.h:62