24#ifndef __ODGIMATERIAL_H__
25#define __ODGIMATERIAL_H__
890 return (m_method == other.m_method) &&
891 (m_factor == other.m_factor) &&
892 (m_color == other.m_color);
909 return (m_method != other.m_method) ||
910 (m_factor != other.m_factor) ||
911 (m_color != other.m_color);
924 void setBlendFactor(
double factor);
931 double blendFactor()
const;
1051 void copyFrom(
const OdRxObject* pSource);
1115 void copyFrom(
const OdRxObject* pSource);
1296 virtual void setRadialNoise(
double radialNoise);
1303 virtual double radialNoise(
void)
const;
1310 virtual void setAxialNoise(
double axialNoise);
1317 virtual double axialNoise(
void)
const;
1324 virtual void setGrainThickness(
double grainThickness);
1331 virtual double grainThickness(
void)
const;
1373 double m_radialNoise;
1374 double m_axialNoise;
1375 double m_grainThickness;
1440 virtual void setVeinSpacing(
double veinSpacing);
1448 virtual double veinSpacing(
void)
const;
1455 virtual void setVeinWidth(
double veinWidth);
1463 virtual double veinWidth(
void)
const;
1504 double m_veinSpacing;
1540 virtual void setDefinition(
const OdGiVariant &definition);
1671 throw OdError(eNotApplicable);
1769 , m_autoTransform(
kNone)
2208 if ((m_source == other.m_source) &&
2209 (m_flags == other.m_flags) &&
2210 (m_blendFactor == other.m_blendFactor) &&
2211 (m_brightness == other.m_brightness) &&
2212 (m_mapper == other.m_mapper))
2214 if (m_texture.isNull() && other.m_texture.
isNull())
2216 if (!m_texture.isNull() && !other.m_texture.
isNull())
2217 return (*m_texture == *(other.m_texture));
2239 return !(*
this == other);
2253 m_source = mmap.m_source;
2254 m_flags = mmap.m_flags;
2255 m_blendFactor = mmap.m_blendFactor;
2256 m_brightness = mmap.m_brightness;
2257 m_mapper = mmap.m_mapper;
2258 m_texture = mmap.m_texture;
2264 kInvertImage = (1 << 0),
2265 kInvertBrightness = (1 << 1)
2270 double m_blendFactor;
2271 double m_brightness;
2272 OdGiMapper m_mapper;
2289 , m_color(overrideColor)
2339 m_method =
kInherit, m_factor = 0.0;
2353 default:
return m_factor;
2363 , m_blendFactor(1.0)
2383 SETBIT(m_flags, kInvertImage, bInvert);
2389 SETBIT(m_flags, kInvertBrightness, bInvert);
2407 return m_blendFactor;
2413 return m_brightness;
2419 return GETBIT(m_flags, kInvertImage);
2425 return GETBIT(m_flags, kInvertBrightness);
2451 return m_projection == mapper.m_projection
2452 && m_uTiling == mapper.m_uTiling
2453 && m_vTiling == mapper.m_vTiling
2454 && m_autoTransform == mapper.m_autoTransform
2455 && m_transform == mapper.m_transform;
2461 return !(*
this == mapper);
2491 return m_projection;
2509 return m_autoTransform;
2535 m_sourceFileName = fileName;
2541 return m_sourceFileName;
2550 return m_sourceFileName == refTexture.m_sourceFileName;
2556 m_sourceFileName =
texture.m_sourceFileName;
2569 throw OdError(eNotApplicable);
2578 m_pRasterImage =
reinterpret_cast<const OdRxObject*
>(pRasterImage);
2584 return reinterpret_cast<const OdGiRasterImage*
>(m_pRasterImage.get());
2593 return m_pRasterImage.get() == refTexture.m_pRasterImage.
get();
2599 m_pRasterImage =
texture.m_pRasterImage;
2612 throw OdError(eNotApplicable);
2623 if (m_pRasterImage.isNull())
2624 m_pRasterImage = OdGiRasterImageTexture::createObject();
2625 m_pRasterImage->setRasterImage(pRasterImage);
2627 m_pRasterImage.release();
2633 if (m_pRasterImage.isNull())
2635 return m_pRasterImage->rasterImage();
2641 m_pRasterImage = pRasterImage;
2647 return m_pRasterImage;
2677 throw OdError(eNotApplicable);
2687 , m_grainThickness(0.)
2694 m_color1 = woodColor1;
2706 m_color2 = woodColor2;
2724 return m_radialNoise;
2736 return m_axialNoise;
2748 return m_grainThickness;
2757 return (m_color1 == refTexture.m_color1) &&
2758 (m_color2 == refTexture.m_color2) &&
2759 (m_radialNoise == refTexture.m_radialNoise) &&
2760 (m_axialNoise == refTexture.m_axialNoise) &&
2761 (m_grainThickness == refTexture.m_grainThickness);
2769 m_radialNoise =
texture.m_radialNoise;
2770 m_axialNoise =
texture.m_axialNoise;
2771 m_grainThickness =
texture.m_grainThickness;
2788 throw OdError(eNotApplicable);
2810 return m_stoneColor;
2834 return m_veinSpacing;
2855 return (m_stoneColor == refTexture.m_stoneColor) &&
2856 (m_veinColor == refTexture.m_veinColor) &&
2857 (m_veinSpacing == refTexture.m_veinSpacing) &&
2858 (m_veinWidth == refTexture.m_veinWidth);
2864 m_stoneColor =
texture.m_stoneColor;
2865 m_veinColor =
texture.m_veinColor;
2866 m_veinSpacing =
texture.m_veinSpacing;
2867 m_veinWidth =
texture.m_veinWidth;
2883 throw OdError(eNotApplicable);
2897 if (m_definition.isNull())
2910 return m_definition;
2916 if (m_definition.isNull())
2932 if (m_definition.isNull() && refTexture.m_definition.
isNull())
2934 if (!m_definition.isNull() && !refTexture.m_definition.
isNull())
2935 return (*m_definition == *(refTexture.m_definition));
2942 if (!
texture.m_definition.isNull())
2945 m_definition.release();
2958 throw OdError(eNotApplicable);
#define ODGI_EXPORT_STATIC
OdSmartPtr< OdGiWoodTexture > OdGiWoodTexturePtr
OdSmartPtr< OdGiImageFileTexture > OdGiImageFileTexturePtr
OdSmartPtr< OdGiRasterImageFileTexture > OdGiRasterImageFileTexturePtr
OdSmartPtr< OdGiRasterImageTexture > OdGiRasterImageTexturePtr
OdSmartPtr< OdGiMaterialTexture > OdGiMaterialTexturePtr
OdSmartPtr< OdGiMaterialTraits > OdGiMaterialTraitsPtr
OdSmartPtr< OdGiImageTexture > OdGiImageTexturePtr
OdSmartPtr< OdGiSceneTexture > OdGiSceneTexturePtr
OdSmartPtr< OdGiMarbleTexture > OdGiMarbleTexturePtr
OdSmartPtr< OdGiProceduralTexture > OdGiProceduralTexturePtr
OdSmartPtr< OdGiGenericTexture > OdGiGenericTexturePtr
bool operator!=(T left, const OdGiVariant::EnumType right)
OdSmartPtr< OdGiVariant > OdGiVariantPtr
bool operator==(T left, const OdGiVariant::EnumType right)
#define SETBIT(flags, bit, value)
bool OdLessOrEqual(double x, double y, double tol=1.e-10)
#define GETBIT(flags, bit)
bool OdGreaterOrEqual(double x, double y, double tol=1.e-10)
virtual OdGiVariantPtr definition() const
ODRX_DECLARE_MEMBERS(OdGiGenericTexture)
void copyFrom(const OdRxObject *pSource)
virtual void setDefinition(const OdGiVariant &definition)
virtual Type type() const
virtual bool operator==(const OdGiMaterialTexture &texture) const
OdGiGenericTexture & operator=(const OdGiGenericTexture &texture)
virtual bool operator==(const OdGiMaterialTexture &texture) const
virtual void setSourceFileName(const OdString &fileName)
ODRX_DECLARE_MEMBERS(OdGiImageFileTexture)
void copyFrom(const OdRxObject *pSource)
OdGiImageFileTexture & operator=(const OdGiImageFileTexture &texture)
virtual const OdString sourceFileName() const
ODRX_DECLARE_MEMBERS(OdGiImageTexture)
void setProjection(Projection projection)
OdGiMapper(const OdGiMapper &mapper)=default
static ODGI_EXPORT_STATIC const OdGiMapper kIdentity
OdGiMapper & operator=(const OdGiMapper &mapper)=default
AutoTransform autoTransform() const
Projection projection() const
void setVTiling(Tiling tiling)
bool operator!=(const OdGiMapper &mapper) const
void setAutoTransform(AutoTransform autoTransform)
OdGeMatrix3d & transform()
void setTransform(const OdGeMatrix3d &tm)
void setUTiling(Tiling tiling)
bool operator==(const OdGiMapper &mapper) const
OdGiMarbleTexture & operator=(const OdGiMarbleTexture &texture)
virtual void setStoneColor(const OdGiMaterialColor &stoneColor)
virtual bool operator==(const OdGiMaterialTexture &texture) const
virtual double veinWidth(void) const
virtual double veinSpacing(void) const
void copyFrom(const OdRxObject *pSource)
virtual const OdGiMaterialColor & veinColor(void) const
virtual Type type() const
virtual const OdGiMaterialColor & stoneColor(void) const
virtual void setVeinSpacing(double veinSpacing)
ODRX_DECLARE_MEMBERS(OdGiMarbleTexture)
virtual void setVeinColor(const OdGiMaterialColor &veinColor)
virtual void setVeinWidth(double veinWidth)
void setFactor(double factor)
OdCmEntityColor & color()
void setBlendFactor(double factor)
double blendFactor() const
static ODGI_EXPORT_STATIC const OdGiMaterialColor kNull
void setColor(const OdCmEntityColor &color)
void setMethod(Method method)
void setBrightness(double brightness)
void setMapper(const OdGiMapper &mapper)
void setSourceFileName(const OdString &filename)
void setInverted(bool bInvert)
void setTexture(OdGiMaterialTexturePtr pTexture)
const OdGiMaterialTexturePtr texture(void) const
OdString sourceFileName() const
void setInvertedBrightness(bool bInvert)
static ODGI_EXPORT_STATIC const OdGiMaterialMap kNull
void setSource(Source source)
double blendFactor() const
double brightness() const
bool isInvertedBrightness() const
void setBlendFactor(double blendFactor)
virtual bool operator==(const OdGiMaterialTexture &texture) const
ODRX_DECLARE_MEMBERS(OdGiMaterialTexture)
virtual void cutouts(OdGiMaterialMap &cutoutsMap) const =0
virtual double luminance() const =0
virtual void setSpecularHighlightingOverride(double overrideVal)=0
virtual void setChannelFlags(ChannelFlags flags)=0
virtual void reflection(OdGiMaterialMap &reflectionMap) const =0
virtual void setShadingDiffuse(const OdGiMaterialColor &diffuseColor)=0
virtual double reflectanceScale() const =0
virtual ChannelFlags channelFlags() const =0
virtual void opacity(double &opacityPercentage, OdGiMaterialMap &opacityMap) const =0
virtual void bump(OdGiMaterialMap &bumpMap) const =0
virtual void diffuse(OdGiMaterialColor &diffuseColor, OdGiMaterialMap &diffuseMap) const =0
virtual void setTranslucence(double value)=0
virtual double transmittanceScale() const =0
virtual void setLuminance(double value)=0
virtual void setReflection(const OdGiMaterialMap &reflectionMap)=0
virtual void setRoughness(const OdGiMaterialMap &roughnessMap, double strength)=0
virtual double colorBleedScale() const =0
virtual void setFinalGather(FinalGatherMode mode)=0
virtual void setIndirectBumpScale(double scale)=0
virtual void setBump(const OdGiMaterialMap &bumpMap)=0
virtual void setColorBleedScale(double scale)=0
virtual void setIlluminationModel(IlluminationModel model)=0
virtual void shadingAmbient(OdGiMaterialColor &ambientColor) const =0
virtual double shadowsOpacityEffect(double &nonShadowLightsMergeEffect) const =0
ODRX_DECLARE_MEMBERS(OdGiMaterialTraits)
virtual FinalGatherMode finalGather() const =0
virtual void setNormalMap(const OdGiMaterialMap &normalMap, NormalMapMethod method, double strength)=0
virtual double indirectBumpScale() const =0
virtual ReflectionMethod reflectionMethod() const =0
virtual void setDiffuseColorMode(DiffuseColorMode diffuseColorMode)=0
virtual void setReflectivity(double value)=0
virtual LuminanceMode luminanceMode() const =0
virtual bool twoSided() const =0
virtual void setShadowsOpacityEffect(double effectPercentage, double nonShadowLightsMergeEffect=1.0)=0
virtual void setRefraction(double refractionIndex, const OdGiMaterialMap &refractionMap)=0
virtual void shadingOpacity(double &opacityPercentage) const =0
virtual void tint(OdGiMaterialColor &tintColor) const =0
virtual void setMode(Mode value)=0
virtual void setShadingOpacity(double opacityPercentage)=0
virtual void setTwoSided(bool flag)=0
virtual GlobalIlluminationMode globalIllumination() const =0
virtual void shadingSpecular(OdGiMaterialColor &specularColor) const =0
virtual void setShadingSpecular(const OdGiMaterialColor &specularColor)=0
virtual void ambient(OdGiMaterialColor &ambientColor) const =0
virtual DiffuseColorMode diffuseColorMode() const =0
virtual void setTint(const OdGiMaterialColor &tintColor)=0
virtual void setOpacity(double opacityPercentage, const OdGiMaterialMap &opacityMap)=0
virtual void setLuminanceMode(LuminanceMode mode)=0
virtual void roughness(OdGiMaterialMap &roughnessMap, double &strength) const =0
@ kGlobalIlluminationCast
@ kGlobalIlluminationNone
@ kGlobalIlluminationCastAndReceive
@ kGlobalIlluminationReceive
virtual void emission(OdGiMaterialColor &emissionColor, OdGiMaterialMap &emissionMap) const =0
virtual void setSelfIllumination(double value)=0
virtual void refraction(double &refractionIndex, OdGiMaterialMap &refractionMap) const =0
virtual void setReflectionMethod(ReflectionMethod method)=0
virtual double selfIllumination() const =0
virtual void setCutouts(const OdGiMaterialMap &cutoutsMap)=0
virtual void setEmission(const OdGiMaterialColor &emissionColor, const OdGiMaterialMap &emissionMap)=0
virtual void setTransmittanceScale(double scale)=0
virtual double specularHighlightingOverride() const =0
virtual void setSpecular(const OdGiMaterialColor &specularColor, const OdGiMaterialMap &specularMap, double glossFactor)=0
virtual void setAmbient(const OdGiMaterialColor &ambientColor)=0
virtual void setDiffuse(const OdGiMaterialColor &diffuseColor, const OdGiMaterialMap &diffuseMap)=0
virtual void setShadingAmbient(const OdGiMaterialColor &ambientColor)=0
virtual void setGlobalIllumination(GlobalIlluminationMode mode)=0
virtual Mode mode() const =0
virtual void normalMap(OdGiMaterialMap &normalMap, NormalMapMethod &method, double &strength) const =0
virtual double reflectivity() const =0
@ kFinalGatherCastAndReceive
virtual IlluminationModel illuminationModel() const =0
virtual void shadingDiffuse(OdGiMaterialColor &diffuseColor) const =0
virtual void specular(OdGiMaterialColor &specularColor, OdGiMaterialMap &specularMap, double &glossFactor) const =0
virtual void setReflectanceScale(double scale)=0
virtual double translucence() const =0
virtual Type type() const =0
ODRX_DECLARE_MEMBERS(OdGiProceduralTexture)
OdGiRasterImageFileTexture & operator=(const OdGiRasterImageFileTexture &texture)
void copyFrom(const OdRxObject *pSource)
virtual const OdGiRasterImage * rasterImage() const
virtual void setRasterImage(const OdGiRasterImage *pRasterImage)
virtual bool operator==(const OdGiMaterialTexture &texture) const
virtual void setRasterImageTexture(const OdGiRasterImageTexture *pRasterImage)
virtual const OdGiRasterImageTexture * rasterImageTexture() const
ODRX_DECLARE_MEMBERS(OdGiRasterImageFileTexture)
virtual const OdGiRasterImage * rasterImage() const
OdGiRasterImageTexture & operator=(const OdGiRasterImageTexture &texture)
ODRX_DECLARE_MEMBERS(OdGiRasterImageTexture)
virtual bool operator==(const OdGiMaterialTexture &texture) const
void copyFrom(const OdRxObject *pSource)
virtual void setRasterImage(const OdGiRasterImage *pRasterImage)
virtual bool operator==(const OdGiMaterialTexture &texture) const
void copyFrom(const OdRxObject *pSource)
ODRX_DECLARE_MEMBERS(OdGiSceneTexture)
void setSoftness(OdUInt8 softness)
static OdSmartPtr< OdGiVariant > createObject(const OdGiVariant &value)
virtual void setGrainThickness(double grainThickness)
virtual void setRadialNoise(double radialNoise)
virtual const OdGiMaterialColor & color2(void) const
virtual const OdGiMaterialColor & color1(void) const
OdGiWoodTexture & operator=(const OdGiWoodTexture &texture)
virtual double grainThickness(void) const
void copyFrom(const OdRxObject *pSource)
virtual void setColor2(const OdGiMaterialColor &woodColor2)
virtual Type type() const
virtual void setAxialNoise(double axialNoise)
ODRX_DECLARE_MEMBERS(OdGiWoodTexture)
virtual double axialNoise(void) const
virtual double radialNoise(void) const
virtual bool operator==(const OdGiMaterialTexture &texture) const
virtual void setColor1(const OdGiMaterialColor &woodColor1)
virtual void copyFrom(const OdRxObject *pSource)
virtual OdRxClass * isA() const
static OdRxObjectPtr cast(const OdRxObject *pointer)
GLsizei GLsizei GLchar * source
GLenum GLenum GLuint texture
GLsizei const GLfloat * value