pack.glsl 820 B

12345678910111213141516171819202122232425262728293031323334
  1. vec2 PackNormal( in vec3 _normal )
  2. {
  3. /*original code:
  4. const float _scale = 1.7777;
  5. vec2 _enc = _normal.xy / (_normal.z+1.0);
  6. _enc /= _scale;
  7. _enc = _enc*0.5 + 0.5;
  8. return _enc;*/
  9. const float _scale = 1.7777;
  10. float scalar1 = (_normal.z+1.0)*(_scale*2.0);
  11. return _normal.xy / scalar1 + 0.5;
  12. }
  13. vec3 UnpackNormal( in vec2 _enc )
  14. {
  15. /*original code:
  16. float _scale = 1.7777;
  17. vec3 _nn = vec3( _enc*vec2(2.0*_scale, 2.0*_scale) + vec2(-_scale, -_scale), 1.0 );
  18. float _g = 2.0 / dot(_nn.xyz, _nn.xyz);
  19. vec3 _normal;
  20. _normal.xy = _g * _nn.xy;
  21. _normal.z = _g - 1.0;
  22. return _normal;*/
  23. const float _scale = 1.7777;
  24. vec2 _nn = _enc*(2.0*_scale) - _scale;
  25. float _g = 2.0 / (dot(_nn.xy, _nn.xy) + 1.0);
  26. vec3 _normal;
  27. _normal.xy = _g * _nn.xy;
  28. _normal.z = _g - 1.0;
  29. return _normal;
  30. }