shader-env-cube.frag 574 B

1234567891011121314151617181920212223242526
  1. #version 300 es
  2. precision mediump float;
  3. #define PI 3.14159265359
  4. uniform samplerCube envTex;
  5. in vec4 vLocalPosition;
  6. const vec2 invAtan = vec2(1.0 / (PI * 2.0), -1.0 / PI);
  7. vec2 getSphereUV(vec3 v) {
  8. vec2 uv = vec2(atan(v.z, v.x), asin(v.y));
  9. uv *= invAtan;
  10. uv += 0.5;
  11. uv = mod(uv, 1.0);
  12. return uv;
  13. }
  14. out vec4 vFragColor;
  15. void main(){
  16. vec3 nor = normalize((vLocalPosition.xyz * vec3(-1, 1, 1)) / vLocalPosition.w);
  17. vec2 uv = getSphereUV(nor);
  18. vec3 color = texture(envTex, nor).rgb;
  19. // color /= color + 1.0;
  20. vFragColor = vec4(color, 1);
  21. }