-inline bool shader_valid(const char* shader)
-{
- return string_is_ascii(shader)
- && strchr(shader, ' ') == 0
- && strchr(shader, '\n') == 0
- && strchr(shader, '\r') == 0
- && strchr(shader, '\t') == 0
- && strchr(shader, '\v') == 0
- && strchr(shader, '\\') == 0;
+static inline bool shader_is_diffuse( const char *shader ){
+ return
+ /* Quetoo */
+ !string_equal_suffix( shader, "_h" )
+ && !string_equal_suffix( shader, "_local" )
+ && !string_equal_suffix( shader, "_nm" )
+ && !string_equal_suffix( shader, "_s" )
+ /* DarkPlaces */
+ && !string_equal_suffix( shader, "_bump" )
+ && !string_equal_suffix( shader, "_glow" )
+ && !string_equal_suffix( shader, "_gloss" )
+ && !string_equal_suffix( shader, "_luma" )
+ && !string_equal_suffix( shader, "_norm" )
+ && !string_equal_suffix( shader, "_pants" )
+ && !string_equal_suffix( shader, "_shirt" )
+ && !string_equal_suffix( shader, "_reflect" )
+ ;