# I3DShEnvironment Struct Reference
[Shell Interfaces]

Inheritance diagram for I3DShEnvironment:

List of all members.

## Public Member Functions
virtual MCCOMErr MCCOMAPI | SegmentFilter (const TVector3 &beg, const TVector3 &end, TMCColorRGBA &inOutFilter, I3DExRaytracer *raytracer, boolean isShadowCasting, boolean renderVolmetricEffects, boolean indirectLight, boolean isSunLightShadowCasting)=0
virtual MCCOMErr MCCOMAPI | DirectionFilter (const TVector3 &origin, const TVector3 &direction, TMCColorRGBA &inOutFilter, I3DExRaytracer *raytracer, boolean renderVolmetricEffects, boolean indirectLight)=0
virtual MCCOMErr MCCOMAPI | GetBackdropColor (const TVector2 &screenPoint, boolean &fullAreaDone, const TBBox2D &screenMinMax, TMCColorRGB &resultColor)=0
virtual MCCOMErr MCCOMAPI | GetEnvironmentColor (const TVector3 &direction, boolean &fullAreaDone, TMCColorRGB &resultColor)=0
virtual boolean MCCOMAPI | HasAtmosphere () const =0
virtual boolean MCCOMAPI | HasBackdrop () const =0
virtual boolean MCCOMAPI | HasBackground () const =0
virtual MCCOMErr MCCOMAPI | SegmentFilter2 (const Ray3D &ray, real64 tmin, real64 tmax, TMCColorRGBA &inOutFilter, I3DExRaytracer *raytracer, boolean isShadowCasting, boolean renderVolmetricEffects, boolean indirectLight, boolean isSunLightShadowCasting)=0
virtual MCCOMErr MCCOMAPI | DirectionFilter2 (const Ray3D &ray, TMCColorRGBA &inOutFilter, I3DExRaytracer *raytracer, boolean renderVolumePrimitives, boolean renderVolmetricEffects, boolean indirectLight)=0
virtual void MCCOMAPI | SegmentFilterExcludingVolumPrimitives (const Ray3D &ray, real64 tmin, real64 tmax, TMCColorRGBA &inOutFilter, I3DExRaytracer *raytracer, boolean isShadowCasting, boolean renderVolmetricEffects, boolean indirectLight, boolean isSunLightShadowCasting)=0
virtual MCCOMErr MCCOMAPI | SegmentFilter3 (const Ray3D &ray, real64 tmin, real64 tmax, TMCColorRGBA &inOutFilter, TColorRGBLinearEffect *outAtmosphereLinearEffect, TColorRGBLinearEffect *outVolumeLinearEffect, TColorRGBLinearEffect *outEffectLinearEffect, I3DExRaytracer *raytracer, boolean isShadowCasting, boolean renderAtmosphere, boolean renderVolumetricPrimitives, boolean renderVolmetricEffects, boolean indirectLight, boolean isSunLightShadowCasting, boolean oldShadowFiltering)=0
virtual MCCOMErr MCCOMAPI | DirectionFilter3 (const Ray3D &ray, TMCColorRGBA &inOutFilter, TColorRGBLinearEffect *outAtmosphereLinearEffect, TColorRGBLinearEffect *outVolumeLinearEffect, TColorRGBLinearEffect *outEffectLinearEffect, I3DExRaytracer *raytracer, boolean renderAtmosphere, boolean renderVolumePrimitives, boolean renderVolmetricEffects, boolean indirectLight)=0

## Detailed Description

This is the shell interface for environments (Atmosphere, Backdrop, Background...)

There are two interfaces to access a component: The shell interface (ISh. or I3DSh.) and the external interface (IEx. or I3DEx.) . You can get one from the other using QueryInterface.

Whenever it is possible you should use the Shell interface to access the component because the Shell will make sure that the parameter map of the external component is valid. This is especially important if the component is animated. For more information on components see the Overview of the SDK.

This interface provides a convient way to access Atmospheres, Volumetric effects, Background, Backdrops...

## Member Function Documentation

virtual MCCOMErr MCCOMAPI I3DShEnvironment::DirectionFilter | ( | const TVector3 & | origin,
|  | const TVector3 & | direction,
|  | TMCColorRGBA & | inOutFilter,
|  | I3DExRaytracer * | raytracer,
|  | boolean | renderVolmetricEffects,
|  | boolean | indirectLight |
| ) |  |  | `[pure virtual]`

Deprecated:
  use DirectionFilter2 instead. Calculates the effect of the atmosphere on an infinite ray.

Parameters:

  | origin | The origin of the ray in Global Coordinates
  | direction | A unit vector that defines the direction of the ray in Global coordinates
  | inOutFilter | On input it contains the color of the Background. On output it contains the color of the light filtered through the atmosphere.
  | raytracer | The raytracer that should be used for lighting calculations.
  | indirectLight | True if the ray is used to calculate indirect lighting.
  | renderVolmetricEffects | True if volumetric Effects (lightCone, light sphere...) should be taken into account.

virtual MCCOMErr MCCOMAPI I3DShEnvironment::DirectionFilter2 | ( | const Ray3D & | ray,
|  | TMCColorRGBA & | inOutFilter,
|  | I3DExRaytracer * | raytracer,
|  | boolean | renderVolumePrimitives,
|  | boolean | renderVolmetricEffects,
|  | boolean | indirectLight |
| ) |  |  | `[pure virtual]`

Calculates the effect of the environment (atmosphere + volume primitives) on an infinite ray.

Parameters:

  | ray | The ray that should be filtered
  | inOutFilter | On input this is the color of the light coming from the end of the ray (tmax). On output it should contain the color of the light seen through the atmosphere and the volume primitives
  | raytracer | The raytracer that should be used for lighting calculations
  | renderVolumePrimitives | True if volumetric Primitives (clouds,fire,...) should be taken into account.
  | renderVolmetricEffects | True if volumetric Effects (lightCone, light sphere...) should be taken into account.
  | indirectLight | True if the ray is used to calculate indirect lighting.

virtual MCCOMErr MCCOMAPI I3DShEnvironment::DirectionFilter3 | ( | const Ray3D & | ray,
|  | TMCColorRGBA & | inOutFilter,
|  | TColorRGBLinearEffect * | outAtmosphereLinearEffect,
|  | TColorRGBLinearEffect * | outVolumeLinearEffect,
|  | TColorRGBLinearEffect * | outEffectLinearEffect,
|  | I3DExRaytracer * | raytracer,
|  | boolean | renderAtmosphere,
|  | boolean | renderVolumePrimitives,
|  | boolean | renderVolmetricEffects,
|  | boolean | indirectLight |
| ) |  |  | `[pure virtual]`

Calculates the effect of the environment (atmosphere + volume primitives) on an infinite ray.

Parameters:

  | ray | The ray that should be filtered
  | inOutFilter | On input this is the color of the light coming from the end of the ray (tmax). On output it should contain the color of the light seen through the atmosphere and the volume primitives
  | outLinearEffect | If not null, will be filled by the linear effect of the environment.
  | raytracer | The raytracer that should be used for lighting calculations
  | renderAtmosphere | True if the atmosphere sould be taken into account.
  | renderVolumePrimitives | True if volumetric Primitives (clouds,fire,...) should be taken into account.
  | renderVolmetricEffects | True if volumetric Effects (lightCone, light sphere...) should be taken into account.
  | indirectLight | True if the ray is used to calculate indirect lighting.

virtual MCCOMErr MCCOMAPI I3DShEnvironment::GetBackdropColor | ( | const TVector2 & | screenPoint,
|  | boolean & | fullAreaDone,
|  | const TBBox2D & | screenMinMax,
|  | TMCColorRGB & | resultColor |
| ) |  |  | `[pure virtual]`

Returns the color of the backdrop at a particular location of the screen.

Parameters:

  | screenPoint | The coordinates of the point on the screen
  | fullAreaDone | For future use.
  | screenMinMax | The coordinates of the production frame in screen coordinates
  | resultColor | The color that is returned.

virtual MCCOMErr MCCOMAPI I3DShEnvironment::GetEnvironmentColor | ( | const TVector3 & | direction,
|  | boolean & | fullAreaDone,
|  | TMCColorRGB & | resultColor |
| ) |  |  | `[pure virtual]`

Returns the color of the Background.

Parameters:

  | direction | The direction of the ray.
  | fullAreaDone | For future use.
  | resultColor | The color that is returned.

virtual boolean MCCOMAPI I3DShEnvironment::HasAtmosphere | ( |  | ) | const`[pure virtual]`

Returns true if the scene contains an Atmosphere (I3DShAtmosphericShader).

virtual boolean MCCOMAPI I3DShEnvironment::HasBackdrop | ( |  | ) | const`[pure virtual]`

Returns true if the scene contains a Backdrop.

virtual boolean MCCOMAPI I3DShEnvironment::HasBackground | ( |  | ) | const`[pure virtual]`

Returns true if the scene contains a Background.

virtual MCCOMErr MCCOMAPI I3DShEnvironment::SegmentFilter | ( | const TVector3 & | beg,
|  | const TVector3 & | end,
|  | TMCColorRGBA & | inOutFilter,
|  | I3DExRaytracer * | raytracer,
|  | boolean | isShadowCasting,
|  | boolean | renderVolmetricEffects,
|  | boolean | indirectLight,
|  | boolean | isSunLightShadowCasting |
| ) |  |  | `[pure virtual]`

Deprecated:
  use SegmentFilter2 instead. Calculates the effect of the atmosphere on a finite line segment on a ray.

Parameters:

  | beg | The point that defines the beginning of the segment in Global Coordinates. It is the point through which we "see" the atmosphere.
  | end | The point that is seen from beg.
  | inOutFilter | On input this is the color of the light coming from end in the direction of beg. On output it should contained the color of the light seen through beg once the light has been filtered by the atmosphere.
  | raytracer | The raytracer that should be used for lighting calculations.
  | indirectLight | True if the ray is used to calculate indirect lighting.
  | isShadowCasting | True if the ray is a shadow ray.
  | renderVolmetricEffects | True if volumetric Effects (lightCone, light sphere...) should be taken into account.
  | isSunLightShadowCasting | True if the current ray is a shadow ray from the sun

virtual MCCOMErr MCCOMAPI I3DShEnvironment::SegmentFilter2 | ( | const Ray3D & | ray,
|  | real64 | tmin,
|  | real64 | tmax,
|  | TMCColorRGBA & | inOutFilter,
|  | I3DExRaytracer * | raytracer,
|  | boolean | isShadowCasting,
|  | boolean | renderVolmetricEffects,
|  | boolean | indirectLight,
|  | boolean | isSunLightShadowCasting |
| ) |  |  | `[pure virtual]`

Calculates the effect of the environment (atmosphere + volume primitives) on a finite line segment on a ray. This function replaces SegmentFilter which is now obsolete.

Parameters:

  | ray | The ray that should be filtered
  | tmin | The beginning of the segment on the ray
  | tmax | The end of the segmenet on the ray
  | inOutFilter | On input this is the color of the light coming from the end of the ray (tmax). On output it should contain the color of the light seen through the atmosphere and the volume primitives
  | raytracer | The raytracer that should be used for lighting calculations
  | isShadowCasting | True if the ray is a shadow ray.
  | renderVolmetricEffects | True if volumetric Effects (lightCone, light sphere...) should be taken into account.
  | indirectLight | True if the ray is used to calculate indirect lighting.
  | isSunLightShadowCasting | True if the ray is a shadow ray from the sun light.

virtual MCCOMErr MCCOMAPI I3DShEnvironment::SegmentFilter3 | ( | const Ray3D & | ray,
|  | real64 | tmin,
|  | real64 | tmax,
|  | TMCColorRGBA & | inOutFilter,
|  | TColorRGBLinearEffect * | outAtmosphereLinearEffect,
|  | TColorRGBLinearEffect * | outVolumeLinearEffect,
|  | TColorRGBLinearEffect * | outEffectLinearEffect,
|  | I3DExRaytracer * | raytracer,
|  | boolean | isShadowCasting,
|  | boolean | renderAtmosphere,
|  | boolean | renderVolumetricPrimitives,
|  | boolean | renderVolmetricEffects,
|  | boolean | indirectLight,
|  | boolean | isSunLightShadowCasting,
|  | boolean | oldShadowFiltering |
| ) |  |  | `[pure virtual]`

Calculates the effect of the environment (atmosphere + volume primitives) on a finite line segment on a ray. This function replaces SegmentFilter2 which is now obsolete.

Parameters:

  | ray | The ray that should be filtered
  | tmin | The beginning of the segment on the ray
  | tmax | The end of the segmenet on the ray
  | inOutFilter | On input this is the color of the light coming from the end of the ray (tmax). On output it should contain the color of the light seen through the atmosphere and the volume primitives
  | outLinearEffect | If not null, will be filled by the linear effect of the environment.
  | raytracer | The raytracer that should be used for lighting calculations
  | isShadowCasting | True if the ray is a shadow ray.
  | renderAtmosphere | True if the atmosphere sould be taken into account.
  | renderVolumePrimitives | True if volumetric Primitives (clouds,fire,...) should be taken into account.
  | renderVolmetricEffects | True if volumetric Effects (lightCone, light sphere...) should be taken into account.
  | indirectLight | True if the ray is used to calculate indirect lighting.
  | isSunLightShadowCasting | True if the ray is a shadow ray from the sun light.

virtual void MCCOMAPI I3DShEnvironment::SegmentFilterExcludingVolumPrimitives | ( | const Ray3D & | ray,
|  | real64 | tmin,
|  | real64 | tmax,
|  | TMCColorRGBA & | inOutFilter,
|  | I3DExRaytracer * | raytracer,
|  | boolean | isShadowCasting,
|  | boolean | renderVolmetricEffects,
|  | boolean | indirectLight,
|  | boolean | isSunLightShadowCasting |
| ) |  |  | `[pure virtual]`

Calculates the effect of only the atmosphere a segment of a ray. This call does not take into account volumetric primitives

Parameters:

  | ray | The ray that should be filtered
  | tmin | The beginning of the segment on the ray
  | tmax | The end of the segmenet on the ray
  | inOutFilter | On input this is the color of the light coming from the end of the ray (tmax). On output it should contain the color of the light seen through the atmosphere and the volume primitives
  | raytracer | The raytracer that should be used for lighting calculations
  | isShadowCasting | True if the ray is a shadow ray.
  | renderVolmetricEffects | True if volumetric Effects (lightCone, light sphere...) should be taken into account.
  | indirectLight | True if the ray is used to calculate indirect lighting.
  | isSunLightShadowCasting | True if the ray is a shadow ray from the sun light.

The documentation for this struct was generated from the following file:

- I3dShEnvironment.h