diff options
author | Lukas Toenne <lukas.toenne@googlemail.com> | 2011-11-13 16:17:27 +0400 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@googlemail.com> | 2011-11-13 16:17:27 +0400 |
commit | 11c83d843206648a33bcc8b4d754577ec0a51d2a (patch) | |
tree | 58af33c372ba5d77f68d6ed7b37e5aecd6e6c678 /source/blender/makesdna | |
parent | b1019a56b54294fc91293c5c43ef46d54950ae84 (diff) |
Ocean Sim modifier patch
by Matt Ebb, Hamed Zaghaghi
This adds a new Modifier "Ocean" to simulate large-scale wave motion.
Details can be found in the wiki documentation [1], the project homepage [2] and the patch tracker [3]
The modifier is disabled by default for now. To enable it, the WITH_OCEANSIM (cmake) / WITH_BF_OCEANSIM (scons) flags have to be set. The code depends on fftw3, so this also has to be enabled.
[1]
http://wiki.blender.org/index.php/Doc:2.6/Manual/Modifiers/Simulation/Ocean
[2]
http://www.savetheoceansim.com
[3]
http://projects.blender.org/tracker/?group_id=9&atid=127&func=detail&aid=28338
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 59 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_texture_types.h | 24 |
2 files changed, 83 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 20001ea6cb6..aec984cda34 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -75,6 +75,7 @@ typedef enum ModifierType { eModifierType_WeightVGProximity, eModifierType_EmptySlot, /* keep so DynamicPaint keep loading, can re-use later */ eModifierType_DynamicPaint, /* reserve slot */ + eModifierType_Ocean, NUM_MODIFIER_TYPES } ModifierType; @@ -750,6 +751,64 @@ typedef struct ScrewModifierData { #define MOD_SCREW_OBJECT_OFFSET (1<<2) // #define MOD_SCREW_OBJECT_ANGLE (1<<4) +typedef struct OceanModifierData { + ModifierData modifier; + + struct Ocean *ocean; + struct OceanCache *oceancache; + + int resolution; + int spatial_size; + + float wind_velocity; + + float damp; + float smallest_wave; + float depth; + + float wave_alignment; + float wave_direction; + float wave_scale; + + float chop_amount; + float foam_coverage; + float time; + + int seed; + int flag; + int output; + + int refresh; + + int bakestart; + int bakeend; + + char cachepath[240]; // FILE_MAX + int cached; + + int geometry_mode; + float size; + int repeat_x; + int repeat_y; + + float foam_fade; + +} OceanModifierData; + +#define MOD_OCEAN_GEOM_GENERATE 0 +#define MOD_OCEAN_GEOM_DISPLACE 1 +#define MOD_OCEAN_GEOM_SIM_ONLY 2 + +#define MOD_OCEAN_REFRESH_RESET 1 +#define MOD_OCEAN_REFRESH_SIM 2 +#define MOD_OCEAN_REFRESH_ADD 4 +#define MOD_OCEAN_REFRESH_CLEAR_CACHE 8 +#define MOD_OCEAN_REFRESH_TOPOLOGY 16 + +#define MOD_OCEAN_GENERATE_FOAM 1 +#define MOD_OCEAN_GENERATE_NORMALS 2 + + typedef struct WarpModifierData { ModifierData modifier; diff --git a/source/blender/makesdna/DNA_texture_types.h b/source/blender/makesdna/DNA_texture_types.h index 1ecca5a0b2a..ece99c8fc86 100644 --- a/source/blender/makesdna/DNA_texture_types.h +++ b/source/blender/makesdna/DNA_texture_types.h @@ -50,6 +50,7 @@ struct Tex; struct Image; struct PreviewImage; struct ImBuf; +struct Ocean; struct CurveMapping; typedef struct MTex { @@ -206,6 +207,15 @@ typedef struct VoxelData { } VoxelData; +typedef struct OceanTex { + struct Object *object; + char oceanmod[64]; + + int output; + int pad; + +} OceanTex; + typedef struct Tex { ID id; struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */ @@ -261,6 +271,7 @@ typedef struct Tex { struct PreviewImage * preview; struct PointDensity *pd; struct VoxelData *vd; + struct OceanTex *ot; char use_nodes; char pad[7]; @@ -318,6 +329,7 @@ typedef struct ColorMapping { #define TEX_DISTNOISE 13 #define TEX_POINTDENSITY 14 #define TEX_VOXELDATA 15 +#define TEX_OCEAN 16 /* musgrave stype */ #define TEX_MFRACTAL 0 @@ -588,6 +600,18 @@ typedef struct ColorMapping { #define TEX_VD_SMOKEHEAT 1 #define TEX_VD_SMOKEVEL 2 +/******************** Ocean *****************************/ +/* output */ +#define TEX_OCN_DISPLACEMENT 1 +#define TEX_OCN_FOAM 2 +#define TEX_OCN_JPLUS 3 +#define TEX_OCN_EMINUS 4 +#define TEX_OCN_EPLUS 5 + +/* flag */ +#define TEX_OCN_GENERATE_NORMALS 1 +#define TEX_OCN_XZ 2 + #ifdef __cplusplus } #endif |