texture-lod.chunk 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
  2. #pragma extension([GL_EXT_shader_texture_lod, __VERSION__ < 130])
  3. vec4 fragTextureLod (sampler2D tex, vec2 coord, float lod) {
  4. #if __VERSION__ < 130
  5. #ifdef GL_EXT_shader_texture_lod
  6. return texture2DLodEXT(tex, coord, lod);
  7. #else
  8. return texture2D(tex, coord, lod); // fallback to bias
  9. #endif
  10. #else
  11. return textureLod(tex, coord, lod);
  12. #endif
  13. }
  14. vec4 fragTextureLod (samplerCube tex, vec3 coord, float lod) {
  15. #if __VERSION__ < 130
  16. #ifdef GL_EXT_shader_texture_lod
  17. return textureCubeLodEXT(tex, coord, lod);
  18. #else
  19. return textureCube(tex, coord, lod); // fallback to bias
  20. #endif
  21. #else
  22. return textureLod(tex, coord, lod);
  23. #endif
  24. }
  25. vec4 fragTextureGrad (sampler2D tex, vec2 P, vec2 dPdx, vec2 dPdy) {
  26. #if __VERSION__ < 130
  27. #ifdef GL_EXT_shader_texture_lod
  28. return texture2DGradEXT(tex, P, dPdx, dPdy);
  29. #else
  30. return texture2D(tex, P);
  31. #endif
  32. #else
  33. #if defined(CC_USE_WGPU)
  34. return textureLod(tex, P, 0.0);
  35. #else
  36. return textureGrad(tex, P, dPdx, dPdy);
  37. #endif
  38. #endif
  39. }
  40. vec4 fragTextureGrad (samplerCube tex, vec3 P, vec3 dPdx, vec3 dPdy) {
  41. #if __VERSION__ < 130
  42. #ifdef GL_EXT_shader_texture_lod
  43. return textureCubeGradEXT(tex, P, dPdx, dPdy);
  44. #else
  45. return textureCube(tex, P);
  46. #endif
  47. #else
  48. #if defined(CC_USE_WGPU)
  49. return textureLod(tex, P, 0.0);
  50. #else
  51. return textureGrad(tex, P, dPdx, dPdy);
  52. #endif
  53. #endif
  54. }