Jelajahi Sumber

Added tint color attribute to material data type

It tints all fragments, ignores lighting. Useful for some features like
feedback (damage color, ...).
victorfisac 9 tahun lalu
induk
melakukan
b0a0c5d431
4 mengubah file dengan 7 tambahan dan 1 penghapusan
  1. 2 1
      src/models.c
  2. 1 0
      src/raylib.h
  3. 3 0
      src/rlgl.c
  4. 1 0
      src/rlgl.h

+ 2 - 1
src/models.c

@@ -751,6 +751,7 @@ Material LoadDefaultMaterial(void)
     //material.texNormal;           // NOTE: By default, not set
     //material.texSpecular;         // NOTE: By default, not set
     
+    material.colTint = WHITE;       // Tint color
     material.colDiffuse = WHITE;    // Diffuse color
     material.colAmbient = WHITE;    // Ambient color
     material.colSpecular = WHITE;   // Specular color
@@ -1268,7 +1269,7 @@ void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rota
     //Matrix matModel = MatrixMultiply(model.transform, matTransform);    // Transform to world-space coordinates
     
     model.transform = MatrixMultiply(MatrixMultiply(matScale, matRotation), matTranslation);
-    // model.material.colDiffuse = tint;
+    model.material.colTint = tint;
     
     rlglDrawMesh(model.mesh, model.material, model.transform);
 }

+ 1 - 0
src/raylib.h

@@ -414,6 +414,7 @@ typedef struct Material {
     Texture2D texNormal;        // Normal texture   (binded to shader mapTexture1Loc)
     Texture2D texSpecular;      // Specular texture (binded to shader mapTexture2Loc)
     
+    Color colTint;              // Tint color
     Color colDiffuse;           // Diffuse color
     Color colAmbient;           // Ambient color
     Color colSpecular;          // Specular color

+ 3 - 0
src/rlgl.c

@@ -1793,6 +1793,9 @@ void rlglDrawMesh(Mesh mesh, Material material, Matrix transform)
         // Setup shader uniforms for lights
         SetShaderLights(material.shader);
         
+        // Upload to shader material.colSpecular
+        glUniform4f(glGetUniformLocation(material.shader.id, "colTint"), (float)material.colTint.r/255, (float)material.colTint.g/255, (float)material.colTint.b/255, (float)material.colTint.a/255);
+        
         // Upload to shader material.colAmbient
         glUniform4f(glGetUniformLocation(material.shader.id, "colAmbient"), (float)material.colAmbient.r/255, (float)material.colAmbient.g/255, (float)material.colAmbient.b/255, (float)material.colAmbient.a/255);
         

+ 1 - 0
src/rlgl.h

@@ -202,6 +202,7 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion;
         Texture2D texNormal;        // Normal texture
         Texture2D texSpecular;      // Specular texture
         
+        Color colTint;              // Tint color
         Color colDiffuse;           // Diffuse color
         Color colAmbient;           // Ambient color
         Color colSpecular;          // Specular color