Sampler.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import Check from '../Core/Check.js';
  2. import defaultValue from '../Core/defaultValue.js';
  3. import defined from '../Core/defined.js';
  4. import defineProperties from '../Core/defineProperties.js';
  5. import DeveloperError from '../Core/DeveloperError.js';
  6. import TextureMagnificationFilter from './TextureMagnificationFilter.js';
  7. import TextureMinificationFilter from './TextureMinificationFilter.js';
  8. import TextureWrap from './TextureWrap.js';
  9. /**
  10. * @private
  11. */
  12. function Sampler(options) {
  13. options = defaultValue(options, defaultValue.EMPTY_OBJECT);
  14. var wrapS = defaultValue(options.wrapS, TextureWrap.CLAMP_TO_EDGE);
  15. var wrapT = defaultValue(options.wrapT, TextureWrap.CLAMP_TO_EDGE);
  16. var minificationFilter = defaultValue(options.minificationFilter, TextureMinificationFilter.LINEAR);
  17. var magnificationFilter = defaultValue(options.magnificationFilter, TextureMagnificationFilter.LINEAR);
  18. var maximumAnisotropy = (defined(options.maximumAnisotropy)) ? options.maximumAnisotropy : 1.0;
  19. //>>includeStart('debug', pragmas.debug);
  20. if (!TextureWrap.validate(wrapS)) {
  21. throw new DeveloperError('Invalid sampler.wrapS.');
  22. }
  23. if (!TextureWrap.validate(wrapT)) {
  24. throw new DeveloperError('Invalid sampler.wrapT.');
  25. }
  26. if (!TextureMinificationFilter.validate(minificationFilter)) {
  27. throw new DeveloperError('Invalid sampler.minificationFilter.');
  28. }
  29. if (!TextureMagnificationFilter.validate(magnificationFilter)) {
  30. throw new DeveloperError('Invalid sampler.magnificationFilter.');
  31. }
  32. Check.typeOf.number.greaterThanOrEquals('maximumAnisotropy', maximumAnisotropy, 1.0);
  33. //>>includeEnd('debug');
  34. this._wrapS = wrapS;
  35. this._wrapT = wrapT;
  36. this._minificationFilter = minificationFilter;
  37. this._magnificationFilter = magnificationFilter;
  38. this._maximumAnisotropy = maximumAnisotropy;
  39. }
  40. defineProperties(Sampler.prototype, {
  41. wrapS : {
  42. get : function() {
  43. return this._wrapS;
  44. }
  45. },
  46. wrapT : {
  47. get : function() {
  48. return this._wrapT;
  49. }
  50. },
  51. minificationFilter : {
  52. get : function() {
  53. return this._minificationFilter;
  54. }
  55. },
  56. magnificationFilter : {
  57. get : function() {
  58. return this._magnificationFilter;
  59. }
  60. },
  61. maximumAnisotropy : {
  62. get : function() {
  63. return this._maximumAnisotropy;
  64. }
  65. }
  66. });
  67. Sampler.equals = function(left, right) {
  68. return (left === right) ||
  69. ((defined(left)) &&
  70. (defined(right)) &&
  71. (left._wrapS === right._wrapS) &&
  72. (left._wrapT === right._wrapT) &&
  73. (left._minificationFilter === right._minificationFilter) &&
  74. (left._magnificationFilter === right._magnificationFilter) &&
  75. (left._maximumAnisotropy === right._maximumAnisotropy));
  76. };
  77. export default Sampler;