diff options
author | Alexander Romanov <a.romanov@blend4web.com> | 2015-07-14 19:48:54 +0300 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2015-07-14 19:52:29 +0300 |
commit | 38940662e540743a6a8da287390a02a9f3f76f6d (patch) | |
tree | f29f438c5365e2ea2699853ef9510ee676273dc7 /source/blender/gpu/GPU_material.h | |
parent | 107e34407d0ae4120cc7a12fdb208986a0b47d8e (diff) |
Particle Info node support for GLSL mode and the internal render.
With this patch "Particle Info" node from Cycles works in GLSL and BI
Alexander (Blend4Web Team)
Reviewers: psy-fi
Note: moved particle info to object render instance instead of
shadeinput during review - Antony.
Differential Revision: https://developer.blender.org/D1313
Diffstat (limited to 'source/blender/gpu/GPU_material.h')
-rw-r--r-- | source/blender/gpu/GPU_material.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/source/blender/gpu/GPU_material.h b/source/blender/gpu/GPU_material.h index b8a7fca1380..5995366c095 100644 --- a/source/blender/gpu/GPU_material.h +++ b/source/blender/gpu/GPU_material.h @@ -62,6 +62,7 @@ typedef struct GPUNode GPUNode; typedef struct GPUNodeLink GPUNodeLink; typedef struct GPUMaterial GPUMaterial; typedef struct GPULamp GPULamp; +typedef struct GPUParticleInfo GPUParticleInfo; /* Functions to create GPU Materials nodes */ @@ -90,6 +91,10 @@ typedef enum GPUBuiltin { GPU_OBCOLOR = (1 << 6), GPU_AUTO_BUMPSCALE = (1 << 7), GPU_CAMERA_TEXCO_FACTORS = (1 << 8), + GPU_PARTICLE_SCALAR_PROPS = (1 << 9), + GPU_PARTICLE_LOCATION = (1 << 10), + GPU_PARTICLE_VELOCITY = (1 << 11), + GPU_PARTICLE_ANG_VELOCITY = (1 << 12), } GPUBuiltin; typedef enum GPUOpenGLBuiltin { @@ -189,6 +194,7 @@ GPUNodeLink *GPU_texture(int size, float *pixels); GPUNodeLink *GPU_dynamic_texture(struct GPUTexture *tex, GPUDynamicType dynamictype, void *data); GPUNodeLink *GPU_builtin(GPUBuiltin builtin); GPUNodeLink *GPU_opengl_builtin(GPUOpenGLBuiltin builtin); +void GPU_node_link_set_type(GPUNodeLink *link, GPUType type); bool GPU_link(GPUMaterial *mat, const char *name, ...); bool GPU_stack_link(GPUMaterial *mat, const char *name, GPUNodeStack *in, GPUNodeStack *out, ...); @@ -208,7 +214,7 @@ void GPU_materials_free(void); bool GPU_lamp_override_visible(GPULamp *lamp, struct SceneRenderLayer *srl, struct Material *ma); void GPU_material_bind(GPUMaterial *material, int oblay, int viewlay, double time, int mipmap, float viewmat[4][4], float viewinv[4][4], float cameraborder[4], bool scenelock); -void GPU_material_bind_uniforms(GPUMaterial *material, float obmat[4][4], float obcol[4], float autobumpscale); +void GPU_material_bind_uniforms(GPUMaterial *material, float obmat[4][4], float obcol[4], float autobumpscale, GPUParticleInfo *pi); void GPU_material_unbind(GPUMaterial *material); bool GPU_material_bound(GPUMaterial *material); struct Scene *GPU_material_scene(GPUMaterial *material); @@ -308,6 +314,14 @@ void GPU_mist_update_values(int type, float start, float dist, float inten, floa void GPU_horizon_update_color(float color[3]); void GPU_ambient_update_color(float color[3]); +typedef struct GPUParticleInfo +{ + float scalprops[4]; + float location[3]; + float velocity[3]; + float angular_velocity[3]; +} GPUParticleInfo; + #ifdef __cplusplus } #endif |