CFx SDK Documentation 2026 SP0
Loading...
Searching...
No Matches
GiMaterialItem.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3// All rights reserved.
4//
5// This software and its documentation and related materials are owned by
6// the Alliance. The software may only be incorporated into application
7// programs owned by members of the Alliance, subject to a signed
8// Membership Agreement and Supplemental Software License Agreement with the
9// Alliance. The structure and organization of this software are the valuable
10// trade secrets of the Alliance and its suppliers. The software is also
11// protected by copyright law and international treaty provisions. Application
12// programs incorporating this software must include the following statement
13// with their copyright notices:
14//
15// This application incorporates Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18// All rights reserved.
19//
20// By use of this software, its documentation or related materials, you
21// acknowledge and accept the above terms.
23
24// Material data entry for Gs material cache and textures processing.
25
26#ifndef __ODGIMATERIALITEM_H__
27#define __ODGIMATERIALITEM_H__
28
29#include "GiExport.h"
30#include "GiImage.h"
31#include "GiMaterial.h"
32#include "GiCommonDraw.h"
33
34#include "RxObject.h"
35
36#include "TD_PackPush.h"
37
38class OdDbStub;
39
48class ODGI_EXPORT OdGiMaterialTextureData : public OdRxObject
49{
50 public:
51 // Simple variant type for external device information
52
57 {
70
78
88
97
105 {
106 return m_ddvType;
107 }
108
115 void *getPtr() const
116 {
117 return m_pVoid;
118 }
119
127 {
128 return m_pRxObject;
129 }
130
138 DevDataVariant &operator =(void *ptr)
139 {
140 return setPtr(ptr);
141 }
142
151 {
152 return setRxObject(ptr);
153 }
154
163 {
164 clear();
165 if (ptr != NULL)
166 {
168 m_pVoid = ptr;
169 }
170 return *this;
171 }
172
181 {
182 clear();
184 m_pRxObject = ptr;
185 return *this;
186 }
187
191 void clear()
192 {
194 m_pVoid = NULL;
195 if (m_pRxObject.isNull())
196 m_pRxObject.release();
197 }
198
199 protected:
201 void *m_pVoid;
203 };
204
205 public:
207 friend class OdGiModuleObject;
208
213 virtual void textureDataUnlinked(bool bReason = false) { }
214
220 virtual void setTextureData(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, const OdGiImageBGRA32 &image) = 0;
228
232 virtual bool haveData() const = 0;
233
244
245 private:
247 static void rxInitDefaultTextureDataImplementation();
249 static void rxUninitDefaultTextureDataImplementation();
250};
251
258
266class ODGI_EXPORT OdGiMaterialTextureLoadPE : public OdRxObject
267{
268 public:
270
275
282 virtual void startTextureLoading(OdString &fileName, OdDbBaseDatabase* pDb) = 0;
283
289 virtual void textureLoaded(const OdString &fileName, OdDbBaseDatabase* pDb) = 0;
295 virtual void textureLoadingFailed(const OdString &fileName, OdDbBaseDatabase* pDb) = 0;
296};
297
304
306
340
347
357{
358 public:
360
365 {
366 kFileTexturesOnly = 0, // @def
367 kFileAndProceduralTextures, // not efficient for search
368 kDisable // only loading from LoaderExt will be active
369 };
370
375 virtual void setManageType(ManageType type) = 0;
381 virtual ManageType manageType() const = 0;
382
395
417
450 virtual OdGiMaterialTextureDataPtr tryToLoad(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, OdGiMaterialTextureEntry *pEntry, const OdString &fileName) = 0;
451
457 virtual void linkTexture(const OdGiMaterialMap &matMap, OdGiMaterialTextureDataPtr pData) = 0;
469 virtual void linkTexture(const OdString &fileName, OdGiMaterialTextureDataPtr pData) = 0;
470
477 virtual bool isAvailable(const OdGiMaterialTextureData *pData) const = 0;
478
483 virtual bool unlinkTexture(OdGiMaterialTextureData *pData) = 0;
484
488 virtual void clear() = 0;
489
495 virtual OdUInt32 numTextureEntries() const = 0;
496
504
512};
513
520
529class ODGI_EXPORT OdGiMaterialTextureEntry : public OdRxObject
530{
531 public:
533
545 virtual bool isTextureInitialized() const = 0;
546
552 virtual OdUInt32 proceduralTextureWidth() const = 0;
575
581 virtual double proceduralTextureQuality() const = 0;
586 virtual void setProceduralTextureQuality(double coef) = 0;
587
598 virtual bool setGiMaterialTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, const OdGiMaterialMap &matMap, OdGiMaterialTextureManager *pManager = NULL) = 0;
599
610 virtual bool setGiMaterialTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, OdGiMaterialTexturePtr pTexture, OdGiMaterialTextureManager *pManager = NULL) = 0;
611 // Load texture from raster file
622 virtual bool setGiMaterialTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, const OdString &fileName, OdGiMaterialTextureManager *pManager = NULL) = 0;
633 virtual bool setGiMaterialTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, double opacity, OdGiMaterialTextureManager *pManager = NULL) = 0;
634
640 virtual void setTextureData(OdGiMaterialTextureData *pTextureData, OdGiMaterialTextureManager *pManager = NULL) = 0;
641};
642
649
658class ODGI_EXPORT OdGiMaterialItem : public OdRxObject
659{
660 public:
662
684 virtual void removeDiffuseTexture() = 0;
690 virtual bool haveDiffuseTexture() const = 0;
691
703 virtual OdUInt32 checkTexturesEnabled(const char *pOrder = nullptr, bool bCheckAny = true) const = 0;
704
705 // Container data
706
712 virtual OdRxObjectPtr cachedData() const = 0;
718
724 virtual const OdDbStub *materialId() const = 0;
729 virtual void setMaterialId(const OdDbStub *matId = NULL) = 0;
735 virtual bool isMaterialIdValid(const OdDbStub *matId) = 0;
736};
737
744
754{
755 public:
757
779 virtual void removeSpecularTexture() = 0;
785 virtual bool haveSpecularTexture() const = 0;
786
808 virtual void removeReflectionTexture() = 0;
814 virtual bool haveReflectionTexture() const = 0;
815
837 virtual void removeOpacityTexture() = 0;
843 virtual bool haveOpacityTexture() const = 0;
844
866 virtual void removeBumpTexture() = 0;
872 virtual bool haveBumpTexture() const = 0;
873
895 virtual void removeRefractionTexture() = 0;
901 virtual bool haveRefractionTexture() const = 0;
902
924 virtual void removeNormalMapTexture() = 0;
930 virtual bool haveNormalMapTexture() const = 0;
931
953 virtual void removeEmissionTexture() = 0;
959 virtual bool haveEmissionTexture() const = 0;
960
982 virtual void removeRoughnessTexture() = 0;
988 virtual bool haveRoughnessTexture() const = 0;
989
1011 virtual void removeCutoutsTexture() = 0;
1017 virtual bool haveCutoutsTexture() const = 0;
1018
1040 virtual void removeEnvironmentTexture() = 0;
1046 virtual bool haveEnvironmentTexture() const = 0;
1047};
1048
1055
1056#include "TD_PackPop.h"
1057
1058#endif // __ODGIMATERIALITEM_H__
OdRxObject OdDbBaseDatabase
#define ODGI_EXPORT
Definition GiExport.h:35
OdArray< OdGiPixelBGRA32, OdMemoryAllocator< OdGiPixelBGRA32 > > OdGiPixelBGRA32Array
Definition GiImage.h:429
OdSmartPtr< OdGiMaterialTexture > OdGiMaterialTexturePtr
Definition GiMaterial.h:971
OdSmartPtr< OdGiMaterialRenderItem > OdGiMaterialRenderItemPtr
OdSmartPtr< OdGiMaterialItem > OdGiMaterialItemPtr
OdSmartPtr< OdGiMaterialTextureManager > OdGiMaterialTextureManagerPtr
OdSmartPtr< OdGiMaterialTextureEntry > OdGiMaterialTextureEntryPtr
OdSmartPtr< OdGiMaterialTextureLoadPE > OdGiMaterialTextureLoadPEPtr
OdSmartPtr< OdGiMaterialTextureLoaderExt > OdGiMaterialTextureLoaderExtPtr
OdSmartPtr< OdGiMaterialTextureData > OdGiMaterialTextureDataPtr
unsigned int OdUInt32
virtual void setMaterialId(const OdDbStub *matId=NULL)=0
virtual void setCachedData(OdRxObjectPtr data)=0
virtual const OdDbStub * materialId() const =0
ODRX_DECLARE_MEMBERS(OdGiMaterialItem)
virtual OdGiMaterialTextureEntryPtr diffuseTexture() const =0
virtual bool haveDiffuseTexture() const =0
virtual OdRxObjectPtr cachedData() const =0
virtual OdUInt32 checkTexturesEnabled(const char *pOrder=nullptr, bool bCheckAny=true) const =0
virtual OdGiMaterialTextureEntryPtr diffuseTexture()=0
virtual OdGiMaterialTextureEntryPtr createDiffuseTexture()=0
virtual void removeDiffuseTexture()=0
virtual bool isMaterialIdValid(const OdDbStub *matId)=0
virtual bool haveEnvironmentTexture() const =0
ODRX_DECLARE_MEMBERS(OdGiMaterialRenderItem)
virtual bool haveSpecularTexture() const =0
virtual OdGiMaterialTextureEntryPtr environmentTexture() const =0
virtual OdGiMaterialTextureEntryPtr roughnessTexture()=0
virtual bool haveOpacityTexture() const =0
virtual OdGiMaterialTextureEntryPtr createRefractionTexture()=0
virtual OdGiMaterialTextureEntryPtr reflectionTexture() const =0
virtual OdGiMaterialTextureEntryPtr reflectionTexture()=0
virtual void removeBumpTexture()=0
virtual void removeEmissionTexture()=0
virtual bool haveNormalMapTexture() const =0
virtual OdGiMaterialTextureEntryPtr normalMapTexture()=0
virtual OdGiMaterialTextureEntryPtr createOpacityTexture()=0
virtual void removeCutoutsTexture()=0
virtual OdGiMaterialTextureEntryPtr bumpTexture()=0
virtual void removeNormalMapTexture()=0
virtual OdGiMaterialTextureEntryPtr bumpTexture() const =0
virtual OdGiMaterialTextureEntryPtr refractionTexture()=0
virtual bool haveEmissionTexture() const =0
virtual void removeEnvironmentTexture()=0
virtual OdGiMaterialTextureEntryPtr createBumpTexture()=0
virtual OdGiMaterialTextureEntryPtr createSpecularTexture()=0
virtual void removeRefractionTexture()=0
virtual OdGiMaterialTextureEntryPtr emissionTexture()=0
virtual OdGiMaterialTextureEntryPtr specularTexture() const =0
virtual OdGiMaterialTextureEntryPtr createReflectionTexture()=0
virtual OdGiMaterialTextureEntryPtr refractionTexture() const =0
virtual OdGiMaterialTextureEntryPtr createRoughnessTexture()=0
virtual bool haveBumpTexture() const =0
virtual OdGiMaterialTextureEntryPtr createCutoutsTexture()=0
virtual void removeSpecularTexture()=0
virtual bool haveRoughnessTexture() const =0
virtual bool haveCutoutsTexture() const =0
virtual OdGiMaterialTextureEntryPtr cutoutsTexture() const =0
virtual OdGiMaterialTextureEntryPtr emissionTexture() const =0
virtual OdGiMaterialTextureEntryPtr normalMapTexture() const =0
virtual OdGiMaterialTextureEntryPtr roughnessTexture() const =0
virtual void removeReflectionTexture()=0
virtual OdGiMaterialTextureEntryPtr cutoutsTexture()=0
virtual OdGiMaterialTextureEntryPtr createEnvironmentTexture()=0
virtual OdGiMaterialTextureEntryPtr opacityTexture()=0
virtual OdGiMaterialTextureEntryPtr createNormalMapTexture()=0
virtual bool haveRefractionTexture() const =0
virtual OdGiMaterialTextureEntryPtr createEmissionTexture()=0
virtual OdGiMaterialTextureEntryPtr environmentTexture()=0
virtual OdGiMaterialTextureEntryPtr specularTexture()=0
virtual bool haveReflectionTexture() const =0
virtual OdGiMaterialTextureEntryPtr opacityTexture() const =0
virtual void removeOpacityTexture()=0
virtual void removeRoughnessTexture()=0
static OdRxClass * defaultTextureDataImplementationDesc()
virtual void textureDataUnlinked(bool bReason=false)
virtual void setTextureData(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, const OdGiImageBGRA32 &image)=0
virtual bool haveData() const =0
virtual void textureData(OdGiPixelBGRA32Array &data, OdUInt32 &width, OdUInt32 &height) const =0
ODRX_DECLARE_MEMBERS(OdGiMaterialTextureData)
static OdSmartPtr< OdGiMaterialTextureData > createDefaultTextureDataImplementation()
virtual OdUInt32 proceduralTextureWidth() const =0
virtual OdGiMaterialTextureDataPtr textureData() const =0
virtual bool setGiMaterialTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, OdGiMaterialTexturePtr pTexture, OdGiMaterialTextureManager *pManager=NULL)=0
virtual OdUInt32 proceduralTextureHeight() const =0
virtual void setTextureData(OdGiMaterialTextureData *pTextureData, OdGiMaterialTextureManager *pManager=NULL)=0
virtual void setProceduralTextureHeight(OdUInt32 height)=0
virtual void setProceduralTextureResolution(OdUInt32 width, OdUInt32 height)=0
virtual bool setGiMaterialTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, const OdString &fileName, OdGiMaterialTextureManager *pManager=NULL)=0
virtual bool isTextureInitialized() const =0
virtual void setProceduralTextureWidth(OdUInt32 width)=0
ODRX_DECLARE_MEMBERS(OdGiMaterialTextureEntry)
virtual double proceduralTextureQuality() const =0
virtual bool setGiMaterialTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, const OdGiMaterialMap &matMap, OdGiMaterialTextureManager *pManager=NULL)=0
virtual void setProceduralTextureQuality(double coef)=0
virtual bool setGiMaterialTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, double opacity, OdGiMaterialTextureManager *pManager=NULL)=0
virtual void textureLoadingFailed(const OdString &fileName, OdDbBaseDatabase *pDb)=0
ODRX_DECLARE_MEMBERS(OdGiMaterialTextureLoadPE)
virtual void startTextureLoading(OdString &fileName, OdDbBaseDatabase *pDb)=0
virtual void textureLoaded(const OdString &fileName, OdDbBaseDatabase *pDb)=0
virtual OdGiMaterialTextureDataPtr loadTexture(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, OdGiMaterialTextureEntry *pEntry, OdGiMaterialTexturePtr pTexture)=0
virtual bool allowTextureLoading(OdGiMaterialTexturePtr pTexture)=0
ODRX_DECLARE_MEMBERS(OdGiMaterialTextureLoaderExt)
virtual OdUInt32 numTextureEntries() const =0
virtual OdGiMaterialTextureDataPtr searchTexture(OdGiMaterialTexturePtr pTexture)=0
virtual OdGiMaterialTexturePtr textureEntryKey(OdUInt32 nIndex) const =0
virtual ManageType manageType() const =0
virtual void clear()=0
virtual void setManageType(ManageType type)=0
virtual void linkTexture(const OdGiMaterialMap &matMap, OdGiMaterialTextureDataPtr pData)=0
virtual OdGiMaterialTextureDataPtr searchTexture(const OdString &fileName)=0
virtual OdGiMaterialTextureDataPtr tryToLoad(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, OdGiMaterialTextureEntry *pEntry, OdGiMaterialTexturePtr pTexture)=0
virtual void linkTexture(const OdString &fileName, OdGiMaterialTextureDataPtr pData)=0
ODRX_DECLARE_MEMBERS(OdGiMaterialTextureManager)
virtual OdGiMaterialTextureLoaderExtPtr materialLoaderExt() const =0
virtual OdGiMaterialTextureDataPtr tryToLoad(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, OdGiMaterialTextureEntry *pEntry, const OdGiMaterialMap &matMap)=0
virtual bool unlinkTexture(OdGiMaterialTextureData *pData)=0
virtual OdGiMaterialTextureDataPtr searchTexture(const OdGiMaterialMap &matMap)=0
virtual void linkTexture(OdGiMaterialTexturePtr pTexture, OdGiMaterialTextureDataPtr pData)=0
virtual void setMaterialLoaderExt(OdGiMaterialTextureLoaderExt *pExt)=0
virtual OdGiMaterialTextureDataPtr tryToLoad(OdGiMaterialTextureData::DevDataVariant pDeviceInfo, OdRxClass *pTexDataImpl, const OdGiContext &giCtx, OdGiMaterialTextureEntry *pEntry, const OdString &fileName)=0
virtual OdGiMaterialTextureDataPtr textureEntryData(OdUInt32 nIndex) const =0
virtual bool isAvailable(const OdGiMaterialTextureData *pData) const =0
GLint GLenum GLsizei width
Definition gles2_ext.h:110
GLint GLenum GLsizei GLsizei GLint GLsizei const void * data
Definition gles2_ext.h:110
GLuint GLsizei GLsizei GLint GLenum * type
Definition gles2_ext.h:274
GLint GLenum GLsizei GLsizei height
Definition gles2_ext.h:110
DevDataVariant & setRxObject(OdRxObjectPtr ptr)
DevDataVariant & setPtr(void *ptr)