textureCube() is now used as fallback when textureCubeLod() is unavailable.
&& arbTexFloat
&& (IsGlGreaterEqual (3, 0)
#if defined(GL_ES_VERSION_2_0)
- || CheckExtension ("GL_EXT_shader_texture_lod")
+ || true // || CheckExtension ("GL_EXT_shader_texture_lod") fallback is used when extension is unavailable
#else
|| (IsGlGreaterEqual (2, 1) && CheckExtension ("GL_EXT_gpu_shader4"))
#endif
aProgramSrc->SetHeader ("#extension GL_EXT_shader_texture_lod : enable\n"
"#define textureCubeLod textureCubeLodEXT");
}
+ else
+ {
+ myContext->PushMessage (GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_TYPE_PORTABILITY, 0, GL_DEBUG_SEVERITY_MEDIUM,
+ "Warning: incomplete PBR lighting implementation due to missing OpenGL ES 3.0 or GL_EXT_shader_texture_lod support.");
+ }
#else
aProgramSrc->SetHeader ("#version 120");
#endif
#define occTexture2D texture2D
#define occTexture3D texture3D
#define occTextureCube textureCube
- #define occTextureCubeLod textureCubeLod
+ #if !defined(GL_ES) || defined(textureCubeLod)
+ #define occTextureCubeLod textureCubeLod
+ #else // fallback
+ #define occTextureCubeLod(theSampl,theCoord,theLod) textureCube(theSampl,theCoord)
+ #endif
#endif
#ifdef GL_ES
" #define occTexture2D texture2D\n"
" #define occTexture3D texture3D\n"
" #define occTextureCube textureCube\n"
- " #define occTextureCubeLod textureCubeLod\n"
+ " #if !defined(GL_ES) || defined(textureCubeLod)\n"
+ " #define occTextureCubeLod textureCubeLod\n"
+ " #else // fallback\n"
+ " #define occTextureCubeLod(theSampl,theCoord,theLod) textureCube(theSampl,theCoord)\n"
+ " #endif\n"
"#endif\n"
"\n"
"#ifdef GL_ES\n"