#define DPSOFTRAST_TEXTURE_FORMAT_DEPTH 1
#define DPSOFTRAST_TEXTURE_FORMAT_RGBA8 2
#define DPSOFTRAST_TEXTURE_FORMAT_ALPHA8 3
-#define DPSOFTRAST_TEXTURE_FORMAT_COMPAREMASK 3
+#define DPSOFTRAST_TEXTURE_FORMAT_RGBA16F 4
+#define DPSOFTRAST_TEXTURE_FORMAT_RGBA32F 5
+#define DPSOFTRAST_TEXTURE_FORMAT_COMPAREMASK 0x0F
// modifier flags for texture (can not be changed after creation)
-#define DPSOFTRAST_TEXTURE_FLAG_MIPMAP 4
-#define DPSOFTRAST_TEXTURE_FLAG_CUBEMAP 8
-#define DPSOFTRAST_TEXTURE_FLAG_USEALPHA 16
-#define DPSOFTRAST_TEXTURE_FLAG_CLAMPTOEDGE 32
+#define DPSOFTRAST_TEXTURE_FLAG_MIPMAP 0x10
+#define DPSOFTRAST_TEXTURE_FLAG_CUBEMAP 0x20
+#define DPSOFTRAST_TEXTURE_FLAG_USEALPHA 0x40
+#define DPSOFTRAST_TEXTURE_FLAG_CLAMPTOEDGE 0x80
typedef enum DPSOFTRAST_TEXTURE_FILTER_e
{
SHADERPERMUTATION_REFLECTCUBE = 1<<26, ///< fake reflections using global cubemap (not HDRI light probe)
SHADERPERMUTATION_NORMALMAPSCROLLBLEND = 1<<27, ///< (water) counter-direction normalmaps scrolling
SHADERPERMUTATION_BOUNCEGRID = 1<<28, ///< (lightmap) use Texture_BounceGrid as an additional source of ambient light
- SHADERPERMUTATION_LIMIT = 1<<29, ///< size of permutations array
- SHADERPERMUTATION_COUNT = 29 ///< size of shaderpermutationinfo array
+ SHADERPERMUTATION_BOUNCEGRIDDIRECTIONAL = 1<<29, ///< (lightmap) use 16-component pixels in bouncegrid texture for directional lighting rather than standard 4-component
+ SHADERPERMUTATION_LIMIT = 1<<30, ///< size of permutations array
+ SHADERPERMUTATION_COUNT = 30 ///< size of shaderpermutationinfo array
}
shaderpermutation_t;
}
DPSOFTRAST_UNIFORM;
-void DPSOFTRAST_SetShader(int mode, int permutation);
+void DPSOFTRAST_SetShader(int mode, int permutation, int exactspecularmath);
#define DPSOFTRAST_Uniform1f(index, v0) DPSOFTRAST_Uniform4f(index, v0, 0, 0, 0)
#define DPSOFTRAST_Uniform2f(index, v0, v1) DPSOFTRAST_Uniform4f(index, v0, v1, 0, 0)
#define DPSOFTRAST_Uniform3f(index, v0, v1, v2) DPSOFTRAST_Uniform4f(index, v0, v1, v2, 0)