Refl.shader 686 B

1234567891011121314151617181920212223242526272829303132
  1. shader_type spatial;
  2. render_mode unshaded;
  3. uniform sampler2D tex_panorama : hint_albedo;
  4. void vertex() {
  5. }
  6. vec2 uv_sphere(vec3 v)
  7. {
  8. float pi = 3.1415926536;
  9. vec2 uv=vec2(0.5 + atan(v.z, v.x) / (2.0 * pi), acos(v.y) / pi);
  10. uv.y=1.-uv.y;
  11. uv.x=-0.75+uv.x;
  12. uv=fract(uv);
  13. return uv;
  14. }
  15. void fragment() {
  16. vec3 selfpos=((WORLD_MATRIX*vec4(1.0)).xyz);
  17. vec3 cam=((CAMERA_MATRIX*vec4(1.0)).xyz);
  18. vec3 rd=normalize(((CAMERA_MATRIX*vec4(normalize(-VERTEX),0.0)).xyz));
  19. vec3 nor=normalize((CAMERA_MATRIX * vec4(NORMAL, 0.0)).xyz);
  20. vec3 ref = reflect(rd,nor);
  21. vec2 tuv=uv_sphere(normalize(ref));
  22. vec4 albedo_tex = texture(tex_panorama,tuv);
  23. ALPHA=1.;
  24. ALBEDO = albedo_tex.rgb;
  25. }