#include <c4d_shader.h>
These values have to be filled by custom illumination models:
| VPBitmap** bmp | 
Internal. An array of @ref cnt VPBitmaps.
| Int32* ind | 
The index into the components for all layers.
 Examples: 
| Float* result | 
The result of all components.
| Int32 cnt | 
The number of layers, for instance 1 for the main RGB layer.
| Int32 cmp | 
The number of components.
| Vector** diffuse | 
The diffuse components.
| Int32 diffuse_cnt | 
The number of diffuse components.
| Vector** specular | 
The specular components.
| Int32 specular_cnt | 
The number of specular components.
| Vector** shadow | 
The shadow components.
| Int32 shadow_cnt | 
The number of shadow components.
| RayLight** light | 
The array of the lights that create special light buffers. For example, if you render out a diffuse/specular pass for each light source all those lights will be listed here.
| Int32 light_cnt | 
The number of lights.
| Float** ochannel | 
The object buffers, filled by Cinema 4D. An array of ochannel_cnt Float pointers.
 Each Float* directly points to the value of the object buffer. 
| Int32* ochannelid | 
The channel ID of the object buffer.
| Int32 ochannel_cnt | 
The number of object buffers.
| Vector* vp_ambient | 
The attenuated ambient from all lights plus self illuminating part for the current pixel.
| Vector * vp_diffuse | 
The diffuse illumination for the current pixel.
| Vector * vp_specular | 
The specular illumination for the current pixel.
| Vector * vp_shadow | 
The shadow component for the current pixel.
| Vector * vp_reflection | 
The reflection component for the current pixel.
| Vector * vp_transparency | 
The resulting transparency for the current pixel.
| Vector* vp_radiosity | 
Currently a custom model cannot access radiosity/caustics so it do not need to be filled.
| Vector * vp_caustics | 
Currently a custom model cannot access radiosity/caustics so it do not need to be filled.
| Vector * vp_illumination | 
The diffuse and ambient components of the light.
| Vector* vp_mat_color | 
The diffuse illumination attenuation.
| Vector * vp_mat_luminance | 
Self illuminating part (luminance channel in the Cinema 4D material).
| Vector * vp_mat_transparency | 
The material transparency attenuation.
| Vector * vp_mat_reflection | 
The reflection attenuation (reflection channel in the Cinema 4D material).
| Vector* vp_mat_environment | 
The material environment attenuation.
| Vector * vp_mat_specularcolor | 
The material specular color attenuation.
| Vector * vp_atmosphere | 
The atmosphere component (fog and volumetric effects).
| Float* vp_depth | 
The depth value for the current pixel.
| Float * vp_mat_specular | 
The material specular attenuation.
| Float * vp_mat_diffusion | 
The material diffusion attenuation.
| Float * vp_atmosphere_mul | 
The atmosphere multiplier.
| Vector* vp_ambientocclusion | 
The ambient occlusion.
| Vector * vp_mat_uv | 
The UV layer.
| Vector * vp_mat_normal | 
The normal layer.
| Vector * vp_motionvector | 
The motion vector.
| Vector** rchannel | 
The reflection buffer.
| Vector ** schannel | 
The specular buffer.
| Vector* vp_direct_diffuse | 
Direct diffuse from Reflectance Channel.
| Vector* vp_indirect_diffuse | 
Indirect diffuse from Reflectance Channel.
| Vector* vp_direct_specular | 
Direct specular from Reflectance Channel.
| Vector* vp_indirect_specular | 
Indirect specular from Reflectance Channel.
| Vector* vp_reflectance_albedo | 
Reflectance Channel Diffuse Albedo.
| Vector* vp_magicBulletLooks | 
Channel without Magic Bullet Looks effect.
| Vector** aov_channel | 
The object buffers, filled by Cinema 4D. An array of aov_channel_cnt Vector pointers.
| Int32* aov_channel_id | 
The channel ID of the AOV.
| Int32 aov_channel_cnt | 
The number of AOVs.