mirror of
https://github.com/raysan5/raylib.git
synced 2025-09-15 07:48:15 +00:00
Added lighting engine module
- New lighting engine module which contains new data types Light and Material. These data types and functions facilitates making a basic 3D iluminated program with a light and a model. - Added lighting engine module example (currently included in raylib.h; it might be compiled by separate and include lighting.h in game source C file). - Corrected some opengl defines control structures and added some TODO to fix raylib-opengl 1.1 source build (note: now source can be compiled without errors, but rlglReadPixels() won't work properly). Note: most of functions of phong version 330 shader are not in v100 shaders, so I couldn't write a version 100 phong shader. These functions are included from version 150.
This commit is contained in:
40
src/raylib.h
40
src/raylib.h
@@ -368,6 +368,26 @@ typedef struct Wave {
|
||||
short channels;
|
||||
} Wave;
|
||||
|
||||
// Light type
|
||||
typedef struct Light {
|
||||
float position[3];
|
||||
float rotation[3];
|
||||
float intensity[1];
|
||||
float ambientColor[3];
|
||||
float diffuseColor[3];
|
||||
float specularColor[3];
|
||||
float specularIntensity[1];
|
||||
} Light;
|
||||
|
||||
// Material type
|
||||
typedef struct Material {
|
||||
float ambientColor[3];
|
||||
float diffuseColor[3];
|
||||
float specularColor[3];
|
||||
float glossiness[1];
|
||||
float normalDepth[1];
|
||||
} Material;
|
||||
|
||||
// Texture formats
|
||||
// NOTE: Support depends on OpenGL version and platform
|
||||
typedef enum {
|
||||
@@ -702,6 +722,26 @@ void SetShaderMap(Shader *shader, int mapLocation, Texture2D texture, int textur
|
||||
|
||||
void SetBlendMode(int mode); // Set blending mode (alpha, additive, multiplied)
|
||||
|
||||
//----------------------------------------------------------------------------------
|
||||
// Lighting System Functions (engine-module: lighting)
|
||||
// NOTE: light and material structs uses float pointers instead of vectors to be compatible with SetShaderValue()
|
||||
//----------------------------------------------------------------------------------
|
||||
// Lights functions
|
||||
void SetLightPosition(Light *light, Vector3 position); // Set light position converting position vector to float pointer
|
||||
void SetLightRotation(Light *light, Vector3 rotation); // Set light rotation converting rotation vector to float pointer
|
||||
void SetLightIntensity(Light *light, float intensity); // Set light intensity value
|
||||
void SetLightAmbientColor(Light *light, Vector3 color); // Set light ambient color value (it will be multiplied by material ambient color)
|
||||
void SetLightDiffuseColor(Light *light, Vector3 color); // Set light diffuse color (light color)
|
||||
void SetLightSpecularColor(Light *light, Vector3 color); // Set light specular color (it will be multiplied by material specular color)
|
||||
void SetLightSpecIntensity(Light *light, float specIntensity); // Set light specular intensity (specular color scalar multiplier)
|
||||
|
||||
// Materials functions
|
||||
void SetMaterialAmbientColor(Material *material, Vector3 color); // Set material ambient color value (it will be multiplied by light ambient color)
|
||||
void SetMaterialDiffuseColor(Material *material, Vector3 color); // Set material diffuse color (material color, should use DrawModel() tint parameter)
|
||||
void SetMaterialSpecularColor(Material *material, Vector3 color); // Set material specular color (it will be multiplied by light specular color)
|
||||
void SetMaterialGlossiness(Material *material, float glossiness); // Set material glossiness value (recommended values: 0 - 100)
|
||||
void SetMaterialNormalDepth(Material *material, float depth); // Set normal map depth (B component from RGB type map scalar multiplier)
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
// Audio Loading and Playing Functions (Module: audio)
|
||||
//------------------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user