Review text formatting (spacing, tabs...)
This commit is contained in:
parent
302ec438dd
commit
d17a0cee1a
7 changed files with 116 additions and 113 deletions
|
@ -88,8 +88,10 @@ vec3 CalcSpotLight(Light l, vec3 n, vec3 v, float s)
|
||||||
// Spot attenuation
|
// Spot attenuation
|
||||||
float attenuation = clamp(dot(n, lightToSurface), 0.0, 1.0);
|
float attenuation = clamp(dot(n, lightToSurface), 0.0, 1.0);
|
||||||
attenuation = dot(lightToSurface, -lightDir);
|
attenuation = dot(lightToSurface, -lightDir);
|
||||||
|
|
||||||
float lightToSurfaceAngle = degrees(acos(attenuation));
|
float lightToSurfaceAngle = degrees(acos(attenuation));
|
||||||
if (lightToSurfaceAngle > l.coneAngle) attenuation = 0.0;
|
if (lightToSurfaceAngle > l.coneAngle) attenuation = 0.0;
|
||||||
|
|
||||||
float falloff = (l.coneAngle - lightToSurfaceAngle)/l.coneAngle;
|
float falloff = (l.coneAngle - lightToSurfaceAngle)/l.coneAngle;
|
||||||
|
|
||||||
// Combine diffuse and attenuation
|
// Combine diffuse and attenuation
|
||||||
|
@ -103,7 +105,7 @@ vec3 CalcSpotLight(Light l, vec3 n, vec3 v, float s)
|
||||||
spec = pow(dot(n, h), 3 + glossiness)*s;
|
spec = pow(dot(n, h), 3 + glossiness)*s;
|
||||||
}
|
}
|
||||||
|
|
||||||
return falloff*(diffAttenuation*l.diffuse.rgb + spec*colSpecular.rgb);
|
return (falloff*(diffAttenuation*l.diffuse.rgb + spec*colSpecular.rgb));
|
||||||
}
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
|
@ -122,7 +124,7 @@ void main()
|
||||||
vec3 lighting = colAmbient.rgb;
|
vec3 lighting = colAmbient.rgb;
|
||||||
|
|
||||||
// Calculate normal texture color fetching or set to maximum normal value by default
|
// Calculate normal texture color fetching or set to maximum normal value by default
|
||||||
if(useNormal == 1)
|
if (useNormal == 1)
|
||||||
{
|
{
|
||||||
n *= texture(texture1, fragTexCoord).rgb;
|
n *= texture(texture1, fragTexCoord).rgb;
|
||||||
n = normalize(n);
|
n = normalize(n);
|
||||||
|
@ -130,7 +132,7 @@ void main()
|
||||||
|
|
||||||
// Calculate specular texture color fetching or set to maximum specular value by default
|
// Calculate specular texture color fetching or set to maximum specular value by default
|
||||||
float spec = 1.0;
|
float spec = 1.0;
|
||||||
if(useSpecular == 1) spec *= normalize(texture(texture2, fragTexCoord).r);
|
if (useSpecular == 1) spec *= normalize(texture(texture2, fragTexCoord).r);
|
||||||
|
|
||||||
for (int i = 0; i < lightsCount; i++)
|
for (int i = 0; i < lightsCount; i++)
|
||||||
{
|
{
|
||||||
|
|
10
src/core.c
10
src/core.c
|
@ -2081,7 +2081,7 @@ static void MouseButtonCallback(GLFWwindow *window, int button, int action, int
|
||||||
gestureEvent.position[0].x /= (float)GetScreenWidth();
|
gestureEvent.position[0].x /= (float)GetScreenWidth();
|
||||||
gestureEvent.position[0].y /= (float)GetScreenHeight();
|
gestureEvent.position[0].y /= (float)GetScreenHeight();
|
||||||
|
|
||||||
// Gesture data is sent to gestures system for processing
|
// Gesture data is sent to gestures system for processing
|
||||||
ProcessGestureEvent(gestureEvent);
|
ProcessGestureEvent(gestureEvent);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -2226,7 +2226,7 @@ static void AndroidCommandCallback(struct android_app *app, int32_t cmd)
|
||||||
|
|
||||||
// TODO: GPU assets reload in case of lost focus (lost context)
|
// TODO: GPU assets reload in case of lost focus (lost context)
|
||||||
// NOTE: This problem has been solved just unbinding and rebinding context from display
|
// NOTE: This problem has been solved just unbinding and rebinding context from display
|
||||||
/*
|
/*
|
||||||
if (assetsReloadRequired)
|
if (assetsReloadRequired)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < assetsCount; i++)
|
for (int i = 0; i < assetsCount; i++)
|
||||||
|
@ -2759,9 +2759,9 @@ static void *GamepadThread(void *arg)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Read gamepad event
|
// Read gamepad event
|
||||||
struct js_event gamepadEvent;
|
struct js_event gamepadEvent;
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < MAX_GAMEPADS; i++)
|
for (int i = 0; i < MAX_GAMEPADS; i++)
|
||||||
{
|
{
|
||||||
|
@ -2792,7 +2792,7 @@ static void *GamepadThread(void *arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
94
src/raylib.h
94
src/raylib.h
|
@ -349,7 +349,7 @@ typedef struct Camera {
|
||||||
Vector3 position; // Camera position
|
Vector3 position; // Camera position
|
||||||
Vector3 target; // Camera target it looks-at
|
Vector3 target; // Camera target it looks-at
|
||||||
Vector3 up; // Camera up vector (rotation over its axis)
|
Vector3 up; // Camera up vector (rotation over its axis)
|
||||||
float fovy; // Field-Of-View apperture in Y (degrees)
|
float fovy; // Camera field-of-view apperture in Y (degrees)
|
||||||
} Camera;
|
} Camera;
|
||||||
|
|
||||||
// Camera2D type, defines a 2d camera
|
// Camera2D type, defines a 2d camera
|
||||||
|
@ -362,86 +362,84 @@ typedef struct Camera2D {
|
||||||
|
|
||||||
// Bounding box type
|
// Bounding box type
|
||||||
typedef struct BoundingBox {
|
typedef struct BoundingBox {
|
||||||
Vector3 min;
|
Vector3 min; // minimum vertex box-corner
|
||||||
Vector3 max;
|
Vector3 max; // maximum vertex box-corner
|
||||||
} BoundingBox;
|
} BoundingBox;
|
||||||
|
|
||||||
// Vertex data definning a mesh
|
// Vertex data definning a mesh
|
||||||
typedef struct Mesh {
|
typedef struct Mesh {
|
||||||
int vertexCount; // number of vertices stored in arrays
|
int vertexCount; // number of vertices stored in arrays
|
||||||
int triangleCount; // number of triangles stored (indexed or not)
|
int triangleCount; // number of triangles stored (indexed or not)
|
||||||
float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0)
|
float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0)
|
||||||
float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
|
float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
|
||||||
float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
|
float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
|
||||||
float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
|
float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
|
||||||
float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4)
|
float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4)
|
||||||
unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
|
unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
|
||||||
unsigned short *indices; // vertex indices (in case vertex data comes indexed)
|
unsigned short *indices;// vertex indices (in case vertex data comes indexed)
|
||||||
|
|
||||||
BoundingBox bounds; // mesh limits defined by min and max points
|
unsigned int vaoId; // OpenGL Vertex Array Object id
|
||||||
|
unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data)
|
||||||
unsigned int vaoId; // OpenGL Vertex Array Object id
|
|
||||||
unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data)
|
|
||||||
} Mesh;
|
} Mesh;
|
||||||
|
|
||||||
// Shader type (generic shader)
|
// Shader type (generic shader)
|
||||||
typedef struct Shader {
|
typedef struct Shader {
|
||||||
unsigned int id; // Shader program id
|
unsigned int id; // Shader program id
|
||||||
|
|
||||||
// Vertex attributes locations (default locations)
|
// Vertex attributes locations (default locations)
|
||||||
int vertexLoc; // Vertex attribute location point (default-location = 0)
|
int vertexLoc; // Vertex attribute location point (default-location = 0)
|
||||||
int texcoordLoc; // Texcoord attribute location point (default-location = 1)
|
int texcoordLoc; // Texcoord attribute location point (default-location = 1)
|
||||||
int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5)
|
int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5)
|
||||||
int normalLoc; // Normal attribute location point (default-location = 2)
|
int normalLoc; // Normal attribute location point (default-location = 2)
|
||||||
int tangentLoc; // Tangent attribute location point (default-location = 4)
|
int tangentLoc; // Tangent attribute location point (default-location = 4)
|
||||||
int colorLoc; // Color attibute location point (default-location = 3)
|
int colorLoc; // Color attibute location point (default-location = 3)
|
||||||
|
|
||||||
// Uniform locations
|
// Uniform locations
|
||||||
int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader)
|
int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader)
|
||||||
int tintColorLoc; // Diffuse color uniform location point (fragment shader)
|
int tintColorLoc; // Diffuse color uniform location point (fragment shader)
|
||||||
|
|
||||||
// Texture map locations (generic for any kind of map)
|
// Texture map locations (generic for any kind of map)
|
||||||
int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0)
|
int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0)
|
||||||
int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1)
|
int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1)
|
||||||
int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2)
|
int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2)
|
||||||
} Shader;
|
} Shader;
|
||||||
|
|
||||||
// Material type
|
// Material type
|
||||||
typedef struct Material {
|
typedef struct Material {
|
||||||
Shader shader; // Standard shader (supports 3 map textures)
|
Shader shader; // Standard shader (supports 3 map textures)
|
||||||
|
|
||||||
Texture2D texDiffuse; // Diffuse texture (binded to shader mapTexture0Loc)
|
Texture2D texDiffuse; // Diffuse texture (binded to shader mapTexture0Loc)
|
||||||
Texture2D texNormal; // Normal texture (binded to shader mapTexture1Loc)
|
Texture2D texNormal; // Normal texture (binded to shader mapTexture1Loc)
|
||||||
Texture2D texSpecular; // Specular texture (binded to shader mapTexture2Loc)
|
Texture2D texSpecular; // Specular texture (binded to shader mapTexture2Loc)
|
||||||
|
|
||||||
Color colDiffuse; // Diffuse color
|
Color colDiffuse; // Diffuse color
|
||||||
Color colAmbient; // Ambient color
|
Color colAmbient; // Ambient color
|
||||||
Color colSpecular; // Specular color
|
Color colSpecular; // Specular color
|
||||||
|
|
||||||
float glossiness; // Glossiness level (Ranges from 0 to 1000)
|
float glossiness; // Glossiness level (Ranges from 0 to 1000)
|
||||||
} Material;
|
} Material;
|
||||||
|
|
||||||
// Model type
|
// Model type
|
||||||
typedef struct Model {
|
typedef struct Model {
|
||||||
Mesh mesh; // Vertex data buffers (RAM and VRAM)
|
Mesh mesh; // Vertex data buffers (RAM and VRAM)
|
||||||
Matrix transform; // Local transform matrix
|
Matrix transform; // Local transform matrix
|
||||||
Material material; // Shader and textures data
|
Material material; // Shader and textures data
|
||||||
} Model;
|
} Model;
|
||||||
|
|
||||||
// Light type
|
// Light type
|
||||||
typedef struct LightData {
|
typedef struct LightData {
|
||||||
unsigned int id; // Light id
|
unsigned int id; // Light unique id
|
||||||
int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT
|
int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT
|
||||||
bool enabled; // Light enabled
|
bool enabled; // Light enabled
|
||||||
|
|
||||||
Vector3 position; // Light position
|
Vector3 position; // Light position
|
||||||
Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target)
|
Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target)
|
||||||
float radius; // Light attenuation radius light intensity reduced with distance (world distance)
|
float radius; // Light attenuation radius light intensity reduced with distance (world distance)
|
||||||
|
|
||||||
Color diffuse; // Light diffuse color
|
Color diffuse; // Light diffuse color
|
||||||
float intensity; // Light intensity level
|
float intensity; // Light intensity level
|
||||||
|
|
||||||
float coneAngle; // Light cone max angle: LIGHT_SPOT
|
float coneAngle; // Light cone max angle: LIGHT_SPOT
|
||||||
} LightData, *Light;
|
} LightData, *Light;
|
||||||
|
|
||||||
// Light types
|
// Light types
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
#if defined(RAYMATH_STANDALONE)
|
#if defined(RAYMATH_STANDALONE)
|
||||||
// Vector2 type
|
// Vector2 type
|
||||||
typedef struct Vector2 {
|
typedef struct Vector2 {
|
||||||
float x;
|
float x;
|
||||||
float y;
|
float y;
|
||||||
|
|
99
src/rlgl.h
99
src/rlgl.h
|
@ -131,50 +131,42 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion;
|
||||||
COMPRESSED_ASTC_8x8_RGBA // 2 bpp
|
COMPRESSED_ASTC_8x8_RGBA // 2 bpp
|
||||||
} TextureFormat;
|
} TextureFormat;
|
||||||
|
|
||||||
// Bounding box type
|
|
||||||
typedef struct BoundingBox {
|
|
||||||
Vector3 min;
|
|
||||||
Vector3 max;
|
|
||||||
} BoundingBox;
|
|
||||||
|
|
||||||
// Vertex data definning a mesh
|
// Vertex data definning a mesh
|
||||||
typedef struct Mesh {
|
typedef struct Mesh {
|
||||||
int vertexCount; // number of vertices stored in arrays
|
int vertexCount; // number of vertices stored in arrays
|
||||||
float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0)
|
int triangleCount; // number of triangles stored (indexed or not)
|
||||||
float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
|
float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0)
|
||||||
float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
|
float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
|
||||||
float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
|
float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
|
||||||
float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4)
|
float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
|
||||||
unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
|
float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4)
|
||||||
unsigned short *indices; // vertex indices (in case vertex data comes indexed)
|
unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
|
||||||
int triangleCount; // number of triangles stored (indexed or not)
|
unsigned short *indices;// vertex indices (in case vertex data comes indexed)
|
||||||
|
|
||||||
BoundingBox bounds; // mesh limits defined by min and max points
|
unsigned int vaoId; // OpenGL Vertex Array Object id
|
||||||
|
unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data)
|
||||||
unsigned int vaoId; // OpenGL Vertex Array Object id
|
|
||||||
unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data)
|
|
||||||
} Mesh;
|
} Mesh;
|
||||||
|
|
||||||
// Shader type (generic shader)
|
// Shader type (generic shader)
|
||||||
typedef struct Shader {
|
typedef struct Shader {
|
||||||
unsigned int id; // Shader program id
|
unsigned int id; // Shader program id
|
||||||
|
|
||||||
// Vertex attributes locations (default locations)
|
// Vertex attributes locations (default locations)
|
||||||
int vertexLoc; // Vertex attribute location point (default-location = 0)
|
int vertexLoc; // Vertex attribute location point (default-location = 0)
|
||||||
int texcoordLoc; // Texcoord attribute location point (default-location = 1)
|
int texcoordLoc; // Texcoord attribute location point (default-location = 1)
|
||||||
int normalLoc; // Normal attribute location point (default-location = 2)
|
int normalLoc; // Normal attribute location point (default-location = 2)
|
||||||
int colorLoc; // Color attibute location point (default-location = 3)
|
int colorLoc; // Color attibute location point (default-location = 3)
|
||||||
int tangentLoc; // Tangent attribute location point (default-location = 4)
|
int tangentLoc; // Tangent attribute location point (default-location = 4)
|
||||||
int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5)
|
int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5)
|
||||||
|
|
||||||
// Uniform locations
|
// Uniform locations
|
||||||
int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader)
|
int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader)
|
||||||
int tintColorLoc; // Color uniform location point (fragment shader)
|
int tintColorLoc; // Color uniform location point (fragment shader)
|
||||||
|
|
||||||
// Texture map locations (generic for any kind of map)
|
// Texture map locations (generic for any kind of map)
|
||||||
int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0)
|
int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0)
|
||||||
int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1)
|
int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1)
|
||||||
int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2)
|
int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2)
|
||||||
} Shader;
|
} Shader;
|
||||||
|
|
||||||
// Texture2D type
|
// Texture2D type
|
||||||
|
@ -196,35 +188,46 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion;
|
||||||
|
|
||||||
// Material type
|
// Material type
|
||||||
typedef struct Material {
|
typedef struct Material {
|
||||||
Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular)
|
Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular)
|
||||||
|
|
||||||
Texture2D texDiffuse; // Diffuse texture
|
Texture2D texDiffuse; // Diffuse texture
|
||||||
Texture2D texNormal; // Normal texture
|
Texture2D texNormal; // Normal texture
|
||||||
Texture2D texSpecular; // Specular texture
|
Texture2D texSpecular; // Specular texture
|
||||||
|
|
||||||
Color colDiffuse; // Diffuse color
|
Color colDiffuse; // Diffuse color
|
||||||
Color colAmbient; // Ambient color
|
Color colAmbient; // Ambient color
|
||||||
Color colSpecular; // Specular color
|
Color colSpecular; // Specular color
|
||||||
|
|
||||||
float glossiness; // Glossiness level (Ranges from 0 to 1000)
|
float glossiness; // Glossiness level (Ranges from 0 to 1000)
|
||||||
} Material;
|
} Material;
|
||||||
|
|
||||||
|
// Camera type, defines a camera position/orientation in 3d space
|
||||||
|
typedef struct Camera {
|
||||||
|
Vector3 position; // Camera position
|
||||||
|
Vector3 target; // Camera target it looks-at
|
||||||
|
Vector3 up; // Camera up vector (rotation over its axis)
|
||||||
|
float fovy; // Camera field-of-view apperture in Y (degrees)
|
||||||
|
} Camera;
|
||||||
|
|
||||||
// Light type
|
// Light type
|
||||||
typedef struct LightData {
|
typedef struct LightData {
|
||||||
unsigned int id; // Light id
|
unsigned int id; // Light unique id
|
||||||
int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT
|
int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT
|
||||||
bool enabled; // Light enabled
|
bool enabled; // Light enabled
|
||||||
|
|
||||||
Vector3 position; // Light position
|
Vector3 position; // Light position
|
||||||
Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target)
|
Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target)
|
||||||
float radius; // Light attenuation radius light intensity reduced with distance (world distance)
|
float radius; // Light attenuation radius light intensity reduced with distance (world distance)
|
||||||
|
|
||||||
Color diffuse; // Light diffuse color
|
Color diffuse; // Light diffuse color
|
||||||
float intensity; // Light intensity level
|
float intensity; // Light intensity level
|
||||||
|
|
||||||
float coneAngle; // Light cone max angle: LIGHT_SPOT
|
float coneAngle; // Light cone max angle: LIGHT_SPOT
|
||||||
} LightData, *Light;
|
} LightData, *Light;
|
||||||
|
|
||||||
|
// Light types
|
||||||
|
typedef enum { LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT } LightType;
|
||||||
|
|
||||||
// Color blending modes (pre-defined)
|
// Color blending modes (pre-defined)
|
||||||
typedef enum { BLEND_ALPHA = 0, BLEND_ADDITIVE, BLEND_MULTIPLIED } BlendMode;
|
typedef enum { BLEND_ALPHA = 0, BLEND_ADDITIVE, BLEND_MULTIPLIED } BlendMode;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue