HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TIL_TextureMap.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: UT library (C++)
7  *
8  * COMMENTS: There are two classes defined here. If you're using one,
9  * you'll use the other:
10  * TIL_TextureMap - a texture map. It knows how to lookup
11  * it's raster for you.
12  * TIL_TextureCache - The cache control specifies parameters
13  * used in the internal cache for
14  * texture maps
15  * This class is simply a verb class which
16  * accesses an internal class.
17  *
18  * The only way to get at the texture cache is through a
19  * TIL_TextureMap. This allows the cache to keep a good
20  * record of references. The rasters are loaded on demand
21  * which means that unless you look up a color, you don't
22  * load the raster.
23  *
24  */
25 
26 #ifndef _TIL_TextureMap_h_
27 #define _TIL_TextureMap_h_
28 
29 #include "TIL_API.h"
30 #include <IMG/IMG_FileTypes.h>
31 #include <IMG/IMG_TextureFilter.h>
32 #include <UT/UT_FilterType.h>
33 #include <UT/UT_JSONWriter.h>
34 #include <UT/UT_NonCopyable.h>
35 #include <UT/UT_Options.h>
36 #include <UT/UT_Rect.h>
37 #include <UT/UT_Set.h>
38 #include <UT/UT_SharedPtr.h>
39 #include <UT/UT_String.h>
40 #include <UT/UT_Vector4.h>
41 
42 class TIL_Raster;
43 class TIL_TextureMap;
44 class TIL_Cdf2D;
45 class IMG_TTFilterInfo;
46 class IMG_File;
47 class IMG_FileTTMap;
48 class UT_Options;
49 class til_Map; // Internal structure
50 class til_Lookup; // Internal structure
51 class TIL_TextureRaster; // Not exposed through HDK
52 class UT_Filter;
53 class UT_OpCaller;
54 
55 //
56 // An enum for bump map computation type
57 //
58 
60 {
67 };
68 
70 {
71  TIL_PTEX_COMPLEMENT_S = 0x01, // Complement the S coordinate
72  TIL_PTEX_COMPLEMENT_T = 0x02, // Complement the T coordinate
73  TIL_PTEX_SWAP_ST = 0x04, // Swap S/T coordinates
74 
75  // Orientation matching http://ptex.us
77 
78  // The following are based on experimental evidence and may not be correct
79  // Mudbox has the t coordinate flipped and the ST coordinats swapped
81 };
82 
84 {
85 public:
86  /// Callback for missing texture
88  virtual ~TIL_MissingTexture();
90 
91  /// Callback invoked when a texture can't be found. It's possible @c
92  /// filename may be a @c nullptr.
93  virtual void missingTexture(const char *filename) const {};
94 
95  /// Callback invoked when a texture is converted internally to a .rat
96  virtual void convertToRat(const char *filename) const {};
97 };
98 
100 public:
101  const char *myFilename; // Filename for the raster
102  int myXres, myYres; // Resolution
104  int myImageCount; // Image count...
106  int myOwnership; // If it's a COP, this will be 0
107 };
108 
110 public:
112  : myOptions(NULL)
113  , myShared()
114  { }
116  : myOptions(options)
117  , myShared()
118  { }
121  : myOptions(options)
122  , myShared(shared)
123  { }
125  : myOptions(opts.myOptions)
126  , myShared(opts.myShared)
127  { }
129 
131  {
132  if (&src != this)
133  {
134  myShared = src.myShared;
135  myOptions = src.myOptions;
136  }
137  return *this;
138  }
139 
140  const UT_Options *get() const { return myOptions; }
141 
142 private:
143  const UT_Options *myOptions;
144  UT_SharedPtr<UT_Options> myShared;
145 };
146 
147 //
148 // The texture cache control class
149 //
151 {
152 public:
153 //
154 // Limit the raster size of a texture map to the size specified
155  static int getMaxWidth();
156  static int getMaxHeight();
157  static void setMaxSize(int w=256, int h=256);
158 
159 //
160 // Limit the maximum number of maps in core at once
161  static int getCacheSize();
162  static void setCacheSize(int size=100);
163 
164 // Limit the maps to max amount of memory (in Mb)
165  static int64 getCacheMemSize();
166  static void setCacheMemSize(int64 sizeinmb);
167 
168 //
169 // Query methods for the cache.
170  static void getImageStat(UT_Array<TIL_TextureMapStat> &stats);
171 
172  // Simple method to get memory usage
173  static int64 getMemoryUsage();
174 
175  static void getConversionStats(exint &num_conversions,
176  exint &current_memory,
177  exint &peak_memory);
178 
179  static void storeTexture(const UT_StringHolder &name,
181  static void eraseTexture(const UT_StringHolder &name);
182 
184  {
186 
187  int max_open_files = 0;
188  float max_memory_MB = 0;
189  int autotile = 0;
190  int autoscanline = 0;
191  int automip = 0;
192  int forcefloat = 0;
193  int accept_untiled = 0;
194  int accept_unmipped = 0;
195  int deduplicate = 0;
196  int unassociatedalpha = 0;
197  int failure_retries = 0;
198  int max_errors_per_file = 0;
199  int trust_file_extensions = 0;
200  int max_mip_res = 0;
201 
202  // Read-only options
203  int64 cache_memory_used = 0;
204  int tiles_created = 0;
205  int tiles_current = 0;
206  int tiles_peak = 0;
207  int open_files_created = 0;
208  int open_files_current = 0;
209  int open_files_peak = 0;
210 
211  int64 image_size = 0; // total size
212  int64 file_size = 0; // total size on disk
213  int64 bytes_read = 0; // bytes read
214  int unique_files = 0;
215  float fileio_time = 0;
216  float fileopen_time = 0;
217  };
218  static bool getOIIOStats(OIIOStats &stats);
219 
220  static UT_StringHolder getOIIOStats(int level=1);
221 
223  {
231  };
232  static void getPtexStats(PtexStats &stats);
233 
234  // List of all invalid textures since the cache was last cleared
236  : public UT_NonCopyable
237  {
238  ErrorFiles();
239  ~ErrorFiles();
240 
242  };
243  static ErrorFiles getErrorFiles();
244 
245 //
246 // The version of the cache updates everytime something in it changes
247 // or is removed. This way we can clear display lists, etc.
248  static int getVersion();
249 
250 //
251 // Flush all maps out of core.
252  static void clearCache(int only_out_of_date=0);
253 
254 //
255 // Flush a map by name.
256  static void clearCache(const UT_StringRef &mapname);
257 
258 //
259 // Set auto-flushing of the cache. That is, as soon as the map is
260 // dereferenced completely, flush it from the cache. This can slow
261 // some applications down.
262  static int getAutoFlush();
263  static void setAutoFlush(int onOff);
264 
265 //
266 // Inform the cache of any deleted rasters that it may be referencing
267  static void rasterDied(TIL_Raster *raster);
268  static void imageDataDied(void *imagedata); // for COPs 1.
269 
270 //
271 // If a texture map is not a .rat file, exit with an error on load.
272  static void setNonRATError(bool on);
273  static bool getNonRATError();
274 };
275 
276 class til_PtexData;
277 class til_OIIOData;
278 
280 {
281 public:
283  : myLookup(0)
284  , myPtex()
285  , myOIIO()
286  {
287  }
288 
289  bool isPtex() const { return myPtex != nullptr; }
290  bool isOIIO() const { return myOIIO != nullptr; }
291 
292  const til_Lookup *lookup() const { return myLookup; }
293  const til_PtexData *ptexData() const { return myPtex.get(); }
294  const til_OIIOData *oiioData() const { return myOIIO.get(); }
295 
296 private:
297  TIL_TextureHandle(const til_Lookup *lookup);
300 
301  const til_Lookup *myLookup;
304  friend class TIL_TextureMap;
305 };
306 
308 {
309 public:
310  // Information about a texture
311  struct TextureInfo
312  {
313  void dump() const;
314 
315  bool isValid() const { return myMipMapRes.size() > 0; }
316  bool mipMapped() const { return myMipMapRes.size() > 1; }
317  int mipCount() const { return myMipMapRes.size(); }
318 
322  };
323 
325  {
326  forceDiskCache(bool enable=true)
327  : myEnable(enable)
328  {
329  }
330  bool myEnable;
331  };
332 
334  const char *relativeTo = nullptr,
335  TIL_Raster *rp = nullptr);
336 
337  TIL_TextureMap(const UT_StringHolder &mapname, const forceDiskCache &);
338 
339  virtual ~TIL_TextureMap();
340 
342 
343  /// Returns whether a filename has UDIM formatting characters
344  static bool hasUDIM(const char *format);
345 
346  /// Expand a file containing %(UDIM)d, %(U)d or %(V)d formatting characters
347  /// The @c iu and @c iv parameters passed in are the zero-based coordinates
348  /// (i.e. UDIM == (1000 + iu+1+ 10*iv) and U == iu+1).
349  ///
350  /// For example: expandUDIM("%s/%s_%(UDIM)%d_%(U)02d_%(V)d.rat", 3, 7)
351  /// will return "%s/%s_1074_04_8.rat"
352  static UT_StringHolder expandUDIM(const char *format, int iu, int iv);
353 
354  /// Set the callback for missing textures. This returns the previous
355  /// callback.
356  static const TIL_MissingTexture *setMissingTexture(
358 
359  /// Access the missing texture callback without having to set it
360  static const TIL_MissingTexture *getMissingTexture();
361 
362  /// Check existence of a texture map.
363  static bool mapExists(const UT_StringRef &name);
364 
365  /// Check existence of a UDIM directory. The path passed in should be the
366  /// expanded UDIM texture path. This allows you to check for paths where
367  /// the <UDIM> token is in the directory name (rather than the filename).
368  ///
369  /// If the directory is missing, this will print a warning and notify the
370  /// missing texture callback.
371  static bool validUDIMDirectory(const UT_StringRef &udim_name);
372 
373  void setOpCaller(UT_OpCaller *c) { myCaller = c; }
374  void setMap(const UT_StringHolder &name,
375  const char *relativeTo,
376  TIL_Raster *rp = nullptr,
377  bool always_resolve = true,
378  bool force_disk_cache = false);
379  const UT_StringHolder &getMap() const;
380 
381  void clearRaster();
382  void forceReload();
383  const TIL_Raster *getOGLRaster();
384  TIL_TextureOptions getTextureOptions() const;
385  void getResolution(int &x, int &y)
386  { getResolution(getLookupHandle(), x, y); }
387  int getNChannels() const;
388 
389  // The color channel name may be NULL representing the default channel
390  void setColorChannelName(const UT_StringHolder &n);
391  const UT_StringHolder &getColorChannelName() const;
392 
393  // Set the face index
394  void setFaceIndex(int index);
395  int getFaceIndex() const { return myFaceIndex; }
396  // Set the subimage for OIIO lookup
397  void setSubimage(int i) { mySubimage = i; }
398  int getSubimage() const { return mySubimage; }
399  // Set the channel offset (offset into the tuple data)
400  void setPtexChannel(int index);
401  int getPtexChannel() const { return myPtexChannel; }
402 
403  // ptexture orientation
404  TIL_PtexOrient ptexOrient() const { return myPtexOrient; }
405  void setPtexOrient(TIL_PtexOrient o) { myPtexOrient = o; }
406 
407  void setFilter(UT_FilterType filter, float xw, float yw);
408  void setXFilter(UT_FilterType filter);
409  void setYFilter(UT_FilterType filter);
410  void setFilterWidths(float xwidth, float ywidth);
411  void setFilterBlurs(float xblur, float yblur);
412  void setMipInterpolate(int onoff);
413  void setWrapMode(UT_FilterWrap uwrap, UT_FilterWrap vwrap,
414  const UT_Vector4 &border);
415  void setDeepInterp(IMG_DeepInterp interp);
416  void setBeerLambert(bool beerlambert);
417  void setSourceColorSpace(IMG_ColorSpace convert);
418  void setFilterMode(IMG_TextureFilter::FilterMode m);
419  void setZSkew(float zskew);
420  // IES normalization- 0: none 1: max value (default) 2: preserve energy
422  {
423  myIESNormalization = mode;
424  }
425  void setIESAngleScale(float scale) { myIESAngleScale = scale; }
426 
427  const UT_Filter *getXFilter() const { return myFilter.getXFilter(); };
428  const UT_Filter *getYFilter() const { return myFilter.getYFilter(); };
429  float getXFilterWidth() const { return myFilter.getXWidth(); }
430  float getYFilterWidth() const { return myFilter.getYWidth(); }
431 
432 //
433 // Functions used to set the color lookup behaviour of the map
434  void setColorLookup(bool interp = true,
435  bool needalpha = true)
436  {
437  myInterpRequired = interp;
438  myAlphaRequired = needalpha;
439  }
440  void setBumpLookup(bool interp = false,
442  {
443  myInterpRequired = interp;
444  myBumpType = type;
445  }
446 
447  UT_FilterWrap getUWrap() const { return myFilter.getXWrap(); }
448  UT_FilterWrap getVWrap() const { return myFilter.getYWrap(); }
449  const UT_Vector4 &getBorder() const { return myFilter.getBorder(); }
450 
451  // If the texture failed to load, this method will tell us whether it
452  // is using the default lookup functionality.
453  bool isDefault() const;
454  int isTTMap() const;
455  int isDSM() const;
456  bool isPtex() const;
457  bool isOIIO() const;
458  int isIES() const;
459 
460 //
461 // Lookup a single sample of the image, interpreting the map as a color
462 // When specifying four corners of the map, the order of the coordinates
463 // is very important:
464 //
465 // BAD GOOD GOOD
466 // 2--3 3--2 2--3
467 // \/ | | | |
468 // /\ | | | |
469 // 0--1 0--1 1--0
470 
471  /// When performing multiple texture evaluations, this allows the texture
472  /// class to pre-compute some common values rather than performing the
473  /// computation on every lookup.
474  TIL_TextureHandle getLookupHandle() const;
475 
476  /// @{
477  /// Evaluate using an automatic lookup handle
478  template <typename T>
479  inline void colorLookup(float u, float v, UT_Vector4T<T> &clr) const
480  {
481  TIL_TextureHandle h = getLookupHandle();
482  colorLookup(h, u, v, clr);
483  }
484  template <typename T>
485  inline void colorLookup(const float u[4], const float v[4],
486  UT_Vector4T<T> &clr) const
487  {
488  TIL_TextureHandle h = getLookupHandle();
489  colorLookup(h, u, v, clr);
490  }
491  fpreal depthLookup(float u, float v,
492  float farvalue=1E6) const
493  {
494  TIL_TextureHandle h = getLookupHandle();
495  return depthLookup(h, u, v, farvalue);
496  }
497  template <typename T>
498  void bumpLookup(float u, float v,
499  T &du, T &dv) const
500  {
501  TIL_TextureHandle h = getLookupHandle();
502  bumpLookup(h, u, v, du, dv);
503  }
504 
505  template <typename T>
506  inline void envLookup(const UT_Vector3T<T> &R, fpreal angle,
507  UT_Vector4T<T> &clr) const
508  {
509  TIL_TextureHandle h = getLookupHandle();
510  envLookup(h, R, angle, clr);
511  }
512 
513  template <typename T>
514  inline void envLookup(const UT_Vector3T<T> &r00, const UT_Vector3T<T> &r10,
515  const UT_Vector3T<T> &r11, const UT_Vector3T<T> &r01,
516  UT_Vector4T<T> &clr) const
517  {
518  TIL_TextureHandle h = getLookupHandle();
519  envLookup(h, r00, r10, r11, r01, clr);
520  }
521  /// @}
522 
523  /// @{
524  /// Evaluate using a lookup handle
525  void colorLookup(TIL_TextureHandle &h,
526  float u, float v, UT_Vector4F &clr) const;
527  void colorLookup(TIL_TextureHandle &h,
528  float u, float v, UT_Vector4D &clr) const;
529  void colorLookup(TIL_TextureHandle &h,
530  const float u[4], const float v[4],
531  UT_Vector4F &clr) const;
532  void colorLookup(TIL_TextureHandle &h,
533  const float u[4], const float v[4],
534  UT_Vector4D &clr) const;
535  float depthLookup(TIL_TextureHandle &h,
536  float u, float v,
537  float farvalue=1E6) const;
538  void bumpLookup(TIL_TextureHandle &h,
539  float u, float v,
540  fpreal32 &du, fpreal32 &dv) const;
541  void bumpLookup(TIL_TextureHandle &h,
542  float u, float v,
543  fpreal64 &du, fpreal64 &dv) const;
544 
545  void envLookup(TIL_TextureHandle &h,
546  const UT_Vector3F &R, fpreal angle,
547  UT_Vector4F &clr) const;
548  void envLookup(TIL_TextureHandle &h,
549  const UT_Vector3D &R, fpreal angle,
550  UT_Vector4D &clr) const;
551 
552  void envLookup(TIL_TextureHandle &h,
553  const UT_Vector3F &r00, const UT_Vector3F &r10,
554  const UT_Vector3F &r11, const UT_Vector3F &r01,
555  UT_Vector4 &clr) const;
556  void envLookup(TIL_TextureHandle &h,
557  const UT_Vector3D &r00, const UT_Vector3D &r10,
558  const UT_Vector3D &r11, const UT_Vector3D &r01,
559  UT_Vector4D &clr) const;
560  void getResolution(const TIL_TextureHandle &h,
561  int &x, int &y);
562  /// @}
563 
564  /// @{
565  /// Deep shadow lookup will fall back to regular depth map lookups
566  /// if this map is not a deep shadow map.
567  void deepLookup(TIL_TextureHandle &h,
568  UT_Vector3F &clr,
569  const UT_Vector3F &p,
570  const UT_Vector3F &du,
571  const UT_Vector3F &dv,
572  float quality, int maxsamples);
573  void deepLookup(TIL_TextureHandle &h,
574  UT_Vector3D &clr,
575  const UT_Vector3D &p,
576  const UT_Vector3D &du,
577  const UT_Vector3D &dv,
578  float quality, int maxsamples);
579  /// @}
580 
581  /// Query filter information
582  const IMG_TextureFilter &getFilter() const { return myFilter; }
583  IMG_TextureFilter &getFilter() { return myFilter; }
584 
585  // Adjust scales should only be called internally.
587  {
588  return myBumpType;
589  }
590 
591  bool getInterpRequired() const { return myInterpRequired; }
592  bool getAlphaRequired() const { return myAlphaRequired; }
593 
594  /// Get the OCIO color space associated with the file
595  const UT_StringHolder &ocioColorSpace() const;
596 
597  /// Lookup the wrap mode in metadata on the image. Returns false if
598  /// there's no metadata.
599  void wrapMode(UT_StringHolder &swrap,
600  UT_StringHolder &twrap) const;
601 
602  /// Load information about texture and MIP levels
603  bool textureInfo(TextureInfo &info) const;
604 
605  /// Load the raster for a given MIP level, possibly converting the data
606  bool loadMipRaster(int mip_level,
607  const UT_DimRect &region,
608  void *data);
609 
610  // Returns true if the texture is volatile (ie, sourced from a COP). It
611  // needs to be checked every time it's accessed to se if it's been updated.
612  bool isVolatileTexture() const;
613 
614  // Returns true if a volatile texture has changed, and optionally returns
615  // the new raster in the newraster parm.
616  bool hasTextureChanged(const TIL_Raster **newraster = 0);
617 
618  // Return the IMG File used (for TT maps). This may contain filters.
619  IMG_File *getFile();
620 
621  // Returns the unfiltered TT map.
622  IMG_FileTTMap *getTTMap();
623 
624  /// Return a 2d CDF for sampling
625  const TIL_Cdf2D *getCDF(int maxres=512);
626 
627  // Look up the color channel index
628  int getColorChannelIndex(IMG_FileTTMap *map) const;
629 
630 private:
631  void resolveHandles();
632  float shadowLookup(const UT_Vector3 &p,
633  const UT_Vector3 &du,
634  const UT_Vector3 &dv,
635  float quality, int maxsamples) const;
636 
637  // This version of the shadow lookup is used when there are no
638  // derivatives available (for non-shading contexts)
639  float shadowLookup(const UT_Vector3 &Ps,
640  float du, float dv,
641  float quality, int maxsamples) const;
642 
643  void updateHandles();
644 
645 private:
646  void updateFilter()
647  {
648  if (myOIIO || myPtex)
649  doUpdateFilter();
650  }
651  void doUpdateFilter();
652 
653  til_Map *myMap;
656  UT_OpCaller *myCaller;
657  IMG_TextureFilter myFilter;
658  UT_StringHolder myColorChannel;
659 
660  int myFaceIndex;
661  int mySubimage;
662  int myPtexChannel;
663  TIL_BUMP_COMPUTE_TYPE myBumpType;
664  TIL_PtexOrient myPtexOrient;
665  int myIESNormalization;
666  float myIESAngleScale;
667  bool myInterpRequired;
668  bool myAlphaRequired;
669 };
670 
671 #endif
TIL_TextureOptions(const UT_Options *options)
int getVersion(int version)
Definition: ImfVersion.h:86
bool isPtex() const
GT_API const UT_StringHolder filename
bool isOIIO() const
UT_FilterWrap getVWrap() const
virtual void convertToRat(const char *filename) const
Callback invoked when a texture is converted internally to a .rat.
const UT_Set< UT_StringHolder > * myFileList
TIL_BUMP_COMPUTE_TYPE getBumpCompute() const
const til_PtexData * ptexData() const
SIM_API const UT_StringHolder angle
const UT_Filter * getYFilter() const
const GLdouble * v
Definition: glcorearb.h:837
void colorLookup(float u, float v, UT_Vector4T< T > &clr) const
void colorLookup(const float u[4], const float v[4], UT_Vector4T< T > &clr) const
float getXFilterWidth() const
forceDiskCache(bool enable=true)
TIL_PtexOrient ptexOrient() const
int64 exint
Definition: SYS_Types.h:125
GLint level
Definition: glcorearb.h:108
TIL_MissingTexture()
Callback for missing texture.
UT_FilterWrap
Definition: UT_FilterType.h:40
int getFaceIndex() const
int getPtexChannel() const
GLint y
Definition: glcorearb.h:103
Tto convert(const Tfrom &source)
3D Vector class.
UT_FilterType
Definition: UT_FilterType.h:16
float fpreal32
Definition: SYS_Types.h:200
UT_Array< UT_Vector2i > myMipMapRes
fpreal depthLookup(float u, float v, float farvalue=1E6) const
void setPtexOrient(TIL_PtexOrient o)
int getSubimage() const
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
Definition: UT_UniquePtr.h:39
double fpreal64
Definition: SYS_Types.h:201
const IMG_TextureFilter & getFilter() const
Query filter information.
IMG_DeepInterp
GA_API const UT_StringHolder scale
GLdouble n
Definition: glcorearb.h:2008
IMG_TextureFilter & getFilter()
float getYFilterWidth() const
void setIESNormalization(int mode)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
TIL_BUMP_COMPUTE_TYPE
OIIO_UTIL_API uint64_t file_size(string_view path) noexcept
TIL_TextureOptions(const TIL_TextureOptions &opts)
GLint GLint GLsizei GLint GLenum format
Definition: glcorearb.h:108
TIL_TextureOptions(const UT_Options *options, UT_SharedPtr< UT_Options > shared)
TIL_PtexOrient
#define UT_NON_COPYABLE(CLASS)
Define deleted copy constructor and assignment operator inside a class.
void setColorLookup(bool interp=true, bool needalpha=true)
const UT_Vector4 & getBorder() const
HUSD_API const char * raster()
long long int64
Definition: SYS_Types.h:116
const TIL_TextureOptions & operator=(const TIL_TextureOptions &src)
GLuint const GLchar * name
Definition: glcorearb.h:786
UT_FilterWrap getUWrap() const
const char * myFilename
PXL_DataFormat
Definition: PXL_Common.h:20
void setSubimage(int i)
void getResolution(int &x, int &y)
GLint GLenum GLint x
Definition: glcorearb.h:409
Modes for filtering.
GLenum mode
Definition: glcorearb.h:99
GLsizeiptr size
Definition: glcorearb.h:664
GLfloat GLfloat GLfloat GLfloat h
Definition: glcorearb.h:2002
A map of string to various well defined value types.
Definition: UT_Options.h:84
GLint GLint GLsizei GLint border
Definition: glcorearb.h:108
bool getInterpRequired() const
const UT_Filter * getXFilter() const
fpreal64 fpreal
Definition: SYS_Types.h:277
GLuint index
Definition: glcorearb.h:786
void envLookup(const UT_Vector3T< T > &r00, const UT_Vector3T< T > &r10, const UT_Vector3T< T > &r11, const UT_Vector3T< T > &r01, UT_Vector4T< T > &clr) const
const til_OIIOData * oiioData() const
void envLookup(const UT_Vector3T< T > &R, fpreal angle, UT_Vector4T< T > &clr) const
GLubyte GLubyte GLubyte GLubyte w
Definition: glcorearb.h:857
IMG_ColorSpace
Modes for how to translate colors in images for texture lookups.
#define const
Definition: zconf.h:214
OIIO_API size_t max_open_files()
Get the maximum number of open file handles allowed on this system.
void bumpLookup(float u, float v, T &du, T &dv) const
type
Definition: core.h:1059
#define TIL_API
Definition: TIL_API.h:10
void setBumpLookup(bool interp=false, TIL_BUMP_COMPUTE_TYPE type=TIL_BUMP_PRECOMPUTE)
bool getAlphaRequired() const
void setIESAngleScale(float scale)
Definition: format.h:895
const til_Lookup * lookup() const
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glcorearb.h:1297
GLenum src
Definition: glcorearb.h:1793