# I3DExAtmosphericShader Struct Reference
[External Interfaces]

Inheritance diagram for I3DExAtmosphericShader:

List of all members.

## Public Member Functions
virtual MCCOMErr MCCOMAPI | SegmentTraceRay (const Ray3D &ray, const real64 &tmin, const real64 &tmax, TMCColorRGBA &inOutFilter, TColorRGBLinearEffect *outLinearEffect, TColorRGBLinearEffect *outVolumeLinearEffect, I3DExRaytracer *raytracer, boolean isShadowRay, boolean indirectLight, boolean isSunLightShadowCasting, boolean oldShadowFiltering)=0
virtual MCCOMErr MCCOMAPI | DirectionTraceRay (const Ray3D &ray, TMCColorRGBA &inOutFilter, TColorRGBLinearEffect *outLinearEffect, TColorRGBLinearEffect *outVolumeLinearEffect, I3DExRaytracer *raytracer, boolean indirectLight)=0
virtual MCCOMErr MCCOMAPI | PrepareRender ()=0
virtual MCCOMErr MCCOMAPI | EndRender ()=0
virtual void MCCOMAPI | GetLightInfo (TAtmosphericLightInfo &info, EAtmosphericLightType lightType)=0
virtual void MCCOMAPI | SetLightInfo (TAtmosphericLightInfo &info, EAtmosphericLightType lightType)=0

## Detailed Description

The atmospheric shader is used to create effects such as fog, clouds, sky... It filters the light beams and can modify them at will.

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.

## Member Function Documentation

virtual MCCOMErr MCCOMAPI I3DExAtmosphericShader::DirectionTraceRay | ( | const Ray3D & | ray,
|  | TMCColorRGBA & | inOutFilter,
|  | TColorRGBLinearEffect * | outLinearEffect,
|  | TColorRGBLinearEffect * | outVolumeLinearEffect,
|  | I3DExRaytracer * | raytracer,
|  | boolean | indirectLight |
| ) |  |  | `[pure virtual]`

Calculates the effect of the atmosphere on an infinite ray.

Parameters:

  | ray | 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 | Pointer to the raytracer
  | indirectLight | True if the ray is used to calculate indirect lighting.

Implemented in TBasicAtmosphere.

virtual MCCOMErr MCCOMAPI I3DExAtmosphericShader::EndRender | ( |  | ) | `[pure virtual]`

Called after the scene is rendered

Implemented in TBasicAtmosphere.

virtual void MCCOMAPI I3DExAtmosphericShader::GetLightInfo | ( | TAtmosphericLightInfo & | info,
|  | EAtmosphericLightType | lightType |
| ) |  |  | `[pure virtual]`

Return info about the sun or the moon light

Parameters:

  | info | The info about the light position, color...
  | lightType | Looking for the sun or for the moon.

Implemented in TBasicAtmosphere.

virtual MCCOMErr MCCOMAPI I3DExAtmosphericShader::PrepareRender | ( |  | ) | `[pure virtual]`

Called before the scene is rendered

Implemented in TBasicAtmosphere.

virtual MCCOMErr MCCOMAPI I3DExAtmosphericShader::SegmentTraceRay | ( | const Ray3D & | ray,
|  | const real64 & | tmin,
|  | const real64 & | tmax,
|  | TMCColorRGBA & | inOutFilter,
|  | TColorRGBLinearEffect * | outLinearEffect,
|  | TColorRGBLinearEffect * | outVolumeLinearEffect,
|  | I3DExRaytracer * | raytracer,
|  | boolean | isShadowRay,
|  | boolean | indirectLight,
|  | boolean | isSunLightShadowCasting,
|  | boolean | oldShadowFiltering |
| ) |  |  | `[pure virtual]`

Calculates the effect of the atmosphere on a finite line segment on a ray.

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 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 | Pointer to the raytracer
  | indirectLight | True if the ray is used to calculate indirect lighting.
  | isShadowRay | True if the ray is used to calculate shadows (object -> light source)
  | isSunLightShadowCasting | True if the ray is used to calculate shadows from the sun light

Implemented in TBasicAtmosphere.

virtual void MCCOMAPI I3DExAtmosphericShader::SetLightInfo | ( | TAtmosphericLightInfo & | info,
|  | EAtmosphericLightType | lightType |
| ) |  |  | `[pure virtual]`

Parameters:

  | info | The info about the sun or moon light position, color...
  | lightType | kMoonLight or kSunLight

Implemented in TBasicAtmosphere.

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

- I3dExEnvironment.h