24#ifndef __OD_GI_LIGHT_TRAITS__
25#define __OD_GI_LIGHT_TRAITS__
52 virtual void setOn(
bool on) = 0;
60 virtual bool isOn()
const = 0;
490 bool m_bShapeVisible;
495 double m_lightLength;
497 double m_lightRadius;
502 , m_shadowMapSoftness(1)
503 , m_bShapeVisible(
false)
505 , m_shadowMapSize(256)
506 , m_shadowSamples(16)
516 return (m_bShadowsOn == parms.m_bShadowsOn) &&
517 (m_shadowType == parms.m_shadowType) &&
518 (m_shadowMapSize == parms.m_shadowMapSize) &&
519 (m_shadowMapSoftness == parms.m_shadowMapSoftness) &&
520 (m_shadowSamples == parms.m_shadowSamples) &&
521 (m_bShapeVisible == parms.m_bShapeVisible) &&
522 (m_lightShape == parms.m_lightShape) &&
523 OdEqual(m_lightLength , parms.m_lightLength) &&
524 OdEqual(m_lightWidth , parms.m_lightWidth) &&
525 OdEqual(m_lightRadius , parms.m_lightRadius);
530 return (m_bShadowsOn != parms.m_bShadowsOn) ||
531 (m_shadowType != parms.m_shadowType) ||
532 (m_shadowMapSize != parms.m_shadowMapSize) ||
533 (m_shadowMapSoftness != parms.m_shadowMapSoftness) ||
534 (m_shadowSamples != parms.m_shadowSamples) ||
535 (m_bShapeVisible != parms.m_bShapeVisible) ||
536 (m_lightShape != parms.m_lightShape) ||
537 !
OdEqual(m_lightLength, parms.m_lightLength) ||
538 !
OdEqual(m_lightWidth , parms.m_lightWidth) ||
539 !
OdEqual(m_lightRadius, parms.m_lightRadius);
564 if((sz & (sz-1)) == 0 && sz >= 64 && sz <= 4096)
566 m_shadowMapSize = sz;
577 return m_shadowMapSize;
582 m_shadowMapSoftness = soft;
588 return m_shadowMapSoftness;
593 m_shadowSamples = nSamples;
599 return m_shadowSamples;
604 m_bShapeVisible = bVisibility;
609 return m_bShapeVisible;
614 m_lightShape = lightShape;
624 m_lightLength = dLength;
630 return m_lightLength;
635 m_lightWidth = dWidth;
646 m_lightRadius = dRadius;
652 return m_lightRadius;
732 void setLimits(
double startlim,
double endlim);
790 bool m_bUseAttenLimits;
791 double m_dAttenStartLimit;
792 double m_dAttenEndLimit;
797, m_bUseAttenLimits(
false)
798, m_dAttenStartLimit(1.0)
799, m_dAttenEndLimit(10.0)
815 m_bUseAttenLimits = on;
820 return m_bUseAttenLimits;
825 m_dAttenStartLimit = startlim;
826 m_dAttenEndLimit = endlim;
831 return m_dAttenStartLimit;
836 return m_dAttenEndLimit;
841 pFiler->
wrBool(m_bUseAttenLimits);
842 pFiler->
wrDouble(m_dAttenStartLimit);
848 m_bUseAttenLimits = pFiler->
rdBool();
849 m_dAttenStartLimit = pFiler->
rdDouble();
850 m_dAttenEndLimit = pFiler->
rdDouble();
855 return (m_attenType == other.m_attenType) &&
856 (m_bUseAttenLimits == other.m_bUseAttenLimits) &&
857 (m_dAttenStartLimit == other.m_dAttenStartLimit) &&
858 (m_dAttenEndLimit == other.m_dAttenEndLimit);
863 return (m_attenType != other.m_attenType) ||
864 (m_bUseAttenLimits != other.m_bUseAttenLimits) ||
865 (m_dAttenStartLimit != other.m_dAttenStartLimit) ||
866 (m_dAttenEndLimit != other.m_dAttenEndLimit);
1187 double m_intensityFactor;
1189 double m_horizonHeight;
1190 double m_horizonBlur;
1193 bool m_aerialPerspective;
1194 double m_visibilityDistance;
1196 double m_glowIntensity;
1197 double m_diskIntensity;
1200 double m_redBlueShift;
1201 double m_saturation;
1206, m_intensityFactor(1.0)
1208, m_horizonHeight(0.0)
1210, m_aerialPerspective(
false)
1211, m_visibilityDistance(10000.0)
1213, m_glowIntensity(1.0)
1214, m_diskIntensity(1.0)
1215, m_solarDiskSamples(8)
1216, m_redBlueShift(0.0)
1219 m_groundColor.setColor(0xc2808080);
1220 m_nightColor.setColor(0xc2010205);
1221 m_sunDirection.set(0.35, 1.0, -0.25);
1226 if (m_status !=
params.m_status)
return false;
1227 if (m_intensityFactor !=
params.m_intensityFactor)
return false;
1228 if (m_haze !=
params.m_haze)
return false;
1229 if (m_horizonHeight !=
params.m_horizonHeight)
return false;
1230 if (m_horizonBlur !=
params.m_horizonBlur)
return false;
1231 if (m_groundColor !=
params.m_groundColor)
return false;
1232 if (m_nightColor !=
params.m_nightColor)
return false;
1233 if (m_aerialPerspective !=
params.m_aerialPerspective)
return false;
1234 if (m_visibilityDistance !=
params.m_visibilityDistance)
return false;
1235 if (m_diskScale !=
params.m_diskScale)
return false;
1236 if (m_glowIntensity !=
params.m_glowIntensity)
return false;
1237 if (m_diskIntensity !=
params.m_diskIntensity)
return false;
1238 if (m_solarDiskSamples !=
params.m_solarDiskSamples)
return false;
1239 if (m_sunDirection !=
params.m_sunDirection)
return false;
1240 if (m_redBlueShift !=
params.m_redBlueShift)
return false;
1241 if (m_saturation !=
params.m_saturation)
return false;
1255 m_intensityFactor = intensity;
1259 return m_intensityFactor;
1271 m_horizonHeight =
height;
1275 return m_horizonHeight;
1279 m_horizonBlur = blur;
1283 return m_horizonBlur;
1287 m_groundColor = color;
1291 return m_groundColor;
1295 m_nightColor = color;
1299 return m_nightColor;
1303 m_aerialPerspective = apply;
1307 return m_aerialPerspective;
1311 m_visibilityDistance = distance;
1315 return m_visibilityDistance;
1319 m_diskScale =
scale;
1327 m_glowIntensity = intensity;
1331 return m_glowIntensity;
1335 m_diskIntensity = intensity;
1339 return m_diskIntensity;
1343 m_solarDiskSamples = samples;
1347 return m_solarDiskSamples;
1351 m_sunDirection = sundir;
1355 return m_sunDirection;
1363 return m_redBlueShift;
1371 return m_saturation;
OdSmartPtr< OdStreamBuf > OdStreamBufPtr
OdSmartPtr< OdGiLightTraitsVpDep > OdGiLightTraitsVpDepPtr
OdSmartPtr< OdGiPointLightTraits > OdGiPointLightTraitsPtr
OdSmartPtr< OdGiWebLightTraits > OdGiWebLightTraitsPtr
OdSmartPtr< OdGiStandardLightTraits > OdGiStandardLightTraitsPtr
OdSmartPtr< OdGiSpotLightTraits > OdGiSpotLightTraitsPtr
OdSmartPtr< OdGiDistantLightTraits > OdGiDistantLightTraitsPtr
OdSmartPtr< OdGiLightTraits > OdGiLightTraitsPtr
bool OdEqual(double x, double y, double tol=1.e-10)
virtual OdGiColorRGB lampColor() const =0
virtual void skyParameters(OdGiSkyParameters ¶ms) const =0
virtual void setLightDirection(const OdGeVector3d &vec)=0
virtual bool isSunlight() const =0
virtual void setSkyParameters(const OdGiSkyParameters ¶ms)=0
virtual void setLampColor(const OdGiColorRGB &color)=0
virtual void setPhysicalIntensity(double fIntensity)=0
virtual void setIsSunlight(bool isSunlight)=0
ODRX_DECLARE_MEMBERS(OdGiDistantLightTraits)
virtual double physicalIntensity() const =0
virtual OdGeVector3d lightDirection() const =0
void save(OdGsFiler *pFiler) const
double startLimit() const
AttenuationType attenuationType() const
bool operator==(const OdGiLightAttenuation &other) const
void setUseLimits(bool on)
void load(OdGsFiler *pFiler)
bool operator!=(const OdGiLightAttenuation &other) const
void setAttenuationType(AttenuationType typ)
void setLimits(double startlim, double endlim)
virtual void setOn(bool on)=0
ODRX_DECLARE_MEMBERS(OdGiLightTraits)
virtual bool isOn() const =0
virtual double dimming() const =0
virtual void setDimming(double dim)=0
virtual OdDbStub * viewportObjectId() const =0
virtual bool isOn() const =0
virtual OdUInt32 viewportId() const =0
ODRX_DECLARE_MEMBERS(OdGiLightTraitsVpDep)
virtual void setOn(bool on)=0
virtual void setPosition(const OdGePoint3d &pos)=0
virtual OdGePoint3d targetLocation() const =0
virtual OdGePoint3d position() const =0
ODRX_DECLARE_MEMBERS(OdGiPointLightTraits)
virtual void setLampColor(const OdGiColorRGB &color)=0
virtual void setAttenuation(const OdGiLightAttenuation &atten)=0
virtual double physicalIntensity() const =0
virtual void setHemisphericalDistribution(bool bHemisphere)=0
virtual bool hasTarget() const =0
virtual void setPhysicalIntensity(double fIntensity)=0
virtual bool hemisphericalDistribution() const =0
virtual void setTargetLocation(const OdGePoint3d &loc)=0
virtual void setHasTarget(bool bTarget)=0
virtual OdGiLightAttenuation lightAttenuation() const =0
virtual OdGiColorRGB lampColor() const =0
bool setShadowSamples(OdUInt16 nSamples)
double extendedLightWidth() const
void save(OdGsFiler *pFiler) const
OdUInt16 shadowMapSize() const
double extendedLightLength() const
ShadowType shadowType() const
void setShapeVisibility(bool bVisibility)
OdGiShadowParameters & operator=(const OdGiShadowParameters &parms)=default
bool setExtendedLightWidth(double dWidth)
ExtendedLightShape extendedLightShape() const
double extendedLightRadius() const
OdUInt8 shadowMapSoftness() const
bool shapeVisibility() const
OdGiShadowParameters(const OdGiShadowParameters &parms)=default
void load(OdGsFiler *pFiler)
void setShadowType(ShadowType typ)
bool setExtendedLightLength(double dLength)
void setShadowsOn(bool on)
bool setShadowMapSize(OdUInt16 sz)
bool setShadowMapSoftness(OdUInt8 soft)
OdUInt16 shadowSamples() const
bool operator!=(const OdGiShadowParameters &parms) const
bool setExtendedLightRadius(double dRadius)
bool operator==(const OdGiShadowParameters &parms) const
void setExtendedLightShape(ExtendedLightShape lightShape)
void setRedBlueShift(double redBlueShift)
void setNightColor(const OdCmEntityColor &color)
void setSolarDiskSamples(OdUInt16 samples)
void setIntensityFactor(double intensity)
double diskIntensity() const
double visibilityDistance() const
double saturation() const
double horizonHeight() const
void setHorizonBlur(double blur)
OdCmEntityColor nightColor() const
bool aerialPerspective() const
void setDiskIntensity(double intensity)
void setGlowIntensity(double intensity)
bool operator==(const OdGiSkyParameters ¶ms) const
double glowIntensity() const
void setSunDirection(const OdGeVector3d &sundir)
void setAerialPerspective(bool apply)
void setSaturation(double saturation)
double horizonBlur() const
OdCmEntityColor groundColor() const
OdUInt16 solarDiskSamples() const
void setIllumination(bool enable)
void setGroundColor(const OdCmEntityColor &color)
void setHaze(double haze)
void setDiskScale(double scale)
bool illumination() const
void setVisibilityDistance(double distance)
void setHorizonHeight(double height)
double redBlueShift() const
double intensityFactor() const
const OdGeVector3d & sunDirection() const
virtual double hotspot() const =0
ODRX_DECLARE_MEMBERS(OdGiSpotLightTraits)
virtual void setPhysicalIntensity(double fIntensity)=0
virtual OdGiColorRGB lampColor() const =0
virtual bool setHotspotAndFalloff(double hotspot, double falloff)=0
virtual OdGePoint3d position() const =0
virtual OdGiLightAttenuation lightAttenuation() const =0
virtual void setTargetLocation(const OdGePoint3d &loc)=0
virtual void setAttenuation(const OdGiLightAttenuation &atten)=0
virtual void setLampColor(const OdGiColorRGB &color)=0
virtual OdGePoint3d targetLocation() const =0
virtual double falloff() const =0
virtual void setPosition(const OdGePoint3d &pos)=0
virtual double physicalIntensity() const =0
virtual double intensity() const =0
virtual OdGiShadowParameters shadowParameters() const =0
ODRX_DECLARE_MEMBERS(OdGiStandardLightTraits)
virtual OdCmEntityColor lightColor() const =0
virtual void setIntensity(double inten)=0
virtual void setLightColor(const OdCmEntityColor &color)=0
virtual void setShadowParameters(const OdGiShadowParameters ¶ms)=0
virtual void setWebFlux(double fFlux)=0
virtual OdString webFile() const =0
virtual void setWebFileType(WebFileType type)=0
virtual double webFlux() const =0
ODRX_DECLARE_MEMBERS(OdGiWebLightTraits)
virtual WebFileType webFileType() const =0
virtual OdStreamBufPtr webFileStream() const =0
virtual void setWebSymmetry(WebSymmetry sym)=0
virtual OdGeVector3d webRotation() const =0
virtual void setWebFileStream(OdStreamBufPtr &pWebStream)=0
virtual void setWebHorzAng90to270(bool bFlag)=0
virtual void setWebRotation(OdGeVector3d fRot)=0
virtual void setWebFile(const OdString &fileName)=0
virtual WebSymmetry webSymmetry() const =0
virtual bool webHorzAng90to270() const =0
virtual void wrDouble(double val)
virtual void wrUInt16(OdUInt16 val)
virtual OdUInt8 rdUInt8() const
virtual void wrUInt8(OdUInt8 val)
virtual bool rdBool() const
virtual void wrBool(bool bVal)
virtual OdUInt16 rdUInt16() const
virtual double rdDouble() const
GLuint GLsizei GLsizei GLint GLenum * type
GLint GLenum GLsizei GLsizei height
friend OdGiColorRGB operator+(const OdGiColorRGB &c1, const OdGiColorRGB &c2)
friend OdGiColorRGB operator*(const OdGiColorRGB &c1, const OdGiColorRGB &c2)
OdGiColorRGB(double _red, double _green, double _blue)
friend OdGiColorRGB operator/(const OdGiColorRGB &c1, const OdGiColorRGB &c2)
friend OdGiColorRGB operator-(const OdGiColorRGB &c1, const OdGiColorRGB &c2)