Blender V4.3
BKE_ocean.h File Reference
#include <stdbool.h>

Go to the source code of this file.

Classes

struct  OceanResult
 
struct  OceanCache
 

Typedefs

typedef struct OceanResult OceanResult
 
typedef struct OceanCache OceanCache
 

Functions

struct OceanBKE_ocean_add (void)
 
void BKE_ocean_free_data (struct Ocean *oc)
 
void BKE_ocean_free (struct Ocean *oc)
 
bool BKE_ocean_ensure (struct OceanModifierData *omd, int resolution)
 
bool BKE_ocean_init_from_modifier (struct Ocean *ocean, struct OceanModifierData const *omd, int resolution)
 
bool BKE_ocean_is_valid (const struct Ocean *o)
 
bool BKE_ocean_init (struct Ocean *o, int M, int N, float Lx, float Lz, float V, float l, float A, float w, float damp, float alignment, float depth, float time, int spectrum, float fetch_jonswap, float sharpen_peak_jonswap, short do_height_field, short do_chop, short do_spray, short do_normals, short do_jacobian, int seed)
 
void BKE_ocean_simulate (struct Ocean *o, float t, float scale, float chop_amount)
 
float BKE_ocean_jminus_to_foam (float jminus, float coverage)
 
void BKE_ocean_eval_uv (struct Ocean *oc, struct OceanResult *ocr, float u, float v)
 
void BKE_ocean_eval_uv_catrom (struct Ocean *oc, struct OceanResult *ocr, float u, float v)
 
void BKE_ocean_eval_xz (struct Ocean *oc, struct OceanResult *ocr, float x, float z)
 
void BKE_ocean_eval_xz_catrom (struct Ocean *oc, struct OceanResult *ocr, float x, float z)
 
void BKE_ocean_eval_ij (struct Ocean *oc, struct OceanResult *ocr, int i, int j)
 
struct OceanCacheBKE_ocean_init_cache (const char *bakepath, const char *relbase, int start, int end, float wave_scale, float chop_amount, float foam_coverage, float foam_fade, int resolution)
 
void BKE_ocean_simulate_cache (struct OceanCache *och, int frame)
 
void BKE_ocean_bake (struct Ocean *o, struct OceanCache *och, void(*update_cb)(void *, float progress, int *cancel), void *update_cb_data)
 
void BKE_ocean_cache_eval_uv (struct OceanCache *och, struct OceanResult *ocr, int f, float u, float v)
 
void BKE_ocean_cache_eval_ij (struct OceanCache *och, struct OceanResult *ocr, int f, int i, int j)
 
void BKE_ocean_free_cache (struct OceanCache *och)
 
void BKE_ocean_free_modifier_cache (struct OceanModifierData *omd)
 
float BLI_ocean_spectrum_piersonmoskowitz (const struct Ocean *oc, float kx, float kz)
 
float BLI_ocean_spectrum_texelmarsenarsloe (const struct Ocean *oc, float kx, float kz)
 
float BLI_ocean_spectrum_jonswap (const struct Ocean *oc, float kx, float kz)
 

Typedef Documentation

◆ OceanCache

typedef struct OceanCache OceanCache

◆ OceanResult

typedef struct OceanResult OceanResult

Function Documentation

◆ BKE_ocean_add()

struct Ocean * BKE_ocean_add ( void )

Definition at line 1577 of file ocean.cc.

References MEM_callocN.

Referenced by copy_data(), init_data(), and blender::ed::object::ocean_bake_exec().

◆ BKE_ocean_bake()

void BKE_ocean_bake ( struct Ocean * o,
struct OceanCache * och,
void(* update_cb )(void *, float progress, int *cancel),
void * update_cb_data )

◆ BKE_ocean_cache_eval_ij()

void BKE_ocean_cache_eval_ij ( struct OceanCache * och,
struct OceanResult * ocr,
int f,
int i,
int j )

Definition at line 1636 of file ocean.cc.

◆ BKE_ocean_cache_eval_uv()

void BKE_ocean_cache_eval_uv ( struct OceanCache * och,
struct OceanResult * ocr,
int f,
float u,
float v )

Definition at line 1631 of file ocean.cc.

◆ BKE_ocean_ensure()

bool BKE_ocean_ensure ( struct OceanModifierData * omd,
int resolution )

◆ BKE_ocean_eval_ij()

void BKE_ocean_eval_ij ( struct Ocean * oc,
struct OceanResult * ocr,
int i,
int j )

Note that this doesn't wrap properly for i, j < 0, but its not really meant for that being just a way to get the raw data out to save in some image format.

Definition at line 1573 of file ocean.cc.

◆ BKE_ocean_eval_uv()

void BKE_ocean_eval_uv ( struct Ocean * oc,
struct OceanResult * ocr,
float u,
float v )

Sampling the ocean surface.

Definition at line 1564 of file ocean.cc.

◆ BKE_ocean_eval_uv_catrom()

void BKE_ocean_eval_uv_catrom ( struct Ocean * oc,
struct OceanResult * ocr,
float u,
float v )

Use catmullrom interpolation rather than linear.

Definition at line 1567 of file ocean.cc.

◆ BKE_ocean_eval_xz()

void BKE_ocean_eval_xz ( struct Ocean * oc,
struct OceanResult * ocr,
float x,
float z )

Definition at line 1569 of file ocean.cc.

◆ BKE_ocean_eval_xz_catrom()

void BKE_ocean_eval_xz_catrom ( struct Ocean * oc,
struct OceanResult * ocr,
float x,
float z )

Definition at line 1571 of file ocean.cc.

◆ BKE_ocean_free()

void BKE_ocean_free ( struct Ocean * oc)

Definition at line 1612 of file ocean.cc.

References MEM_freeN().

Referenced by free_data(), and blender::ed::object::oceanbake_endjob().

◆ BKE_ocean_free_cache()

void BKE_ocean_free_cache ( struct OceanCache * och)

Definition at line 1622 of file ocean.cc.

References MEM_freeN().

Referenced by BKE_ocean_free_modifier_cache(), and free_data().

◆ BKE_ocean_free_data()

void BKE_ocean_free_data ( struct Ocean * oc)

Definition at line 1610 of file ocean.cc.

◆ BKE_ocean_free_modifier_cache()

void BKE_ocean_free_modifier_cache ( struct OceanModifierData * omd)

◆ BKE_ocean_init()

bool BKE_ocean_init ( struct Ocean * o,
int M,
int N,
float Lx,
float Lz,
float V,
float l,
float A,
float w,
float damp,
float alignment,
float depth,
float time,
int spectrum,
float fetch_jonswap,
float sharpen_peak_jonswap,
short do_height_field,
short do_chop,
short do_spray,
short do_normals,
short do_jacobian,
int seed )

Return true if the ocean data is valid and can be used.

Definition at line 1584 of file ocean.cc.

◆ BKE_ocean_init_cache()

struct OceanCache * BKE_ocean_init_cache ( const char * bakepath,
const char * relbase,
int start,
int end,
float wave_scale,
float chop_amount,
float foam_coverage,
float foam_fade,
int resolution )

Ocean cache handling.

Definition at line 1641 of file ocean.cc.

References MEM_callocN.

Referenced by blender::ed::object::ocean_bake_exec().

◆ BKE_ocean_init_from_modifier()

bool BKE_ocean_init_from_modifier ( struct Ocean * ocean,
struct OceanModifierData const * omd,
int resolution )

Return true if the ocean data is valid and can be used.

Referenced by copy_data(), init_data(), and blender::ed::object::ocean_bake_exec().

◆ BKE_ocean_is_valid()

bool BKE_ocean_is_valid ( const struct Ocean * o)

Return true if the ocean is valid and can be used.

◆ BKE_ocean_jminus_to_foam()

float BKE_ocean_jminus_to_foam ( float jminus,
float coverage )

Definition at line 1559 of file ocean.cc.

◆ BKE_ocean_simulate()

void BKE_ocean_simulate ( struct Ocean * o,
float t,
float scale,
float chop_amount )

Definition at line 1575 of file ocean.cc.

◆ BKE_ocean_simulate_cache()

void BKE_ocean_simulate_cache ( struct OceanCache * och,
int frame )

Definition at line 1656 of file ocean.cc.

◆ BLI_ocean_spectrum_jonswap()

float BLI_ocean_spectrum_jonswap ( const struct Ocean * oc,
float kx,
float kz )

Hasselmann et al, 1973. This model extends the Pierson-Moskowitz model with a peak sharpening function This enhancement is an artificial construct to address the problem that the wave spectrum is never fully developed.

The fetch parameter represents the distance from a lee shore, called the fetch, or the distance over which the wind blows with constant velocity.

◆ BLI_ocean_spectrum_piersonmoskowitz()

float BLI_ocean_spectrum_piersonmoskowitz ( const struct Ocean * oc,
float kx,
float kz )

Pierson-Moskowitz model, 1964, assumes waves reach equilibrium with wind. Model is intended for large area 'fully developed' sea, where winds have been steadily blowing for days over an area that includes hundreds of wavelengths on a side.

◆ BLI_ocean_spectrum_texelmarsenarsloe()

float BLI_ocean_spectrum_texelmarsenarsloe ( const struct Ocean * oc,
float kx,
float kz )

TMA extends the JONSWAP spectrum. This spectral model is best suited to shallow water.