valueTransform.glsl 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /**
  2. * Transform metadata values following the EXT_structural_metadata spec
  3. * by multiplying by scale and adding the offset. Operations are always
  4. * performed component-wise, even for matrices.
  5. *
  6. * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add
  7. * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply
  8. * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value.
  9. *
  10. * @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input.
  11. */
  12. float czm_valueTransform(float offset, float scale, float value) {
  13. return scale * value + offset;
  14. }
  15. vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) {
  16. return scale * value + offset;
  17. }
  18. vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) {
  19. return scale * value + offset;
  20. }
  21. vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) {
  22. return scale * value + offset;
  23. }
  24. mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) {
  25. return matrixCompMult(scale, value) + offset;
  26. }
  27. mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) {
  28. return matrixCompMult(scale, value) + offset;
  29. }
  30. mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) {
  31. return matrixCompMult(scale, value) + offset;
  32. }