---
name: "SoShadowSpotLight"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SoShadowSpotLight"
---

# SoShadowSpotLight(3)

The SoShadowSpotLight class is a node for setting up a spot light which casts shadows.

## NAME

SoShadowSpotLight - The **SoShadowSpotLight** class is a node for setting up a spot light which casts shadows.

## SYNOPSIS

\#include \<Inventor/annex/FXViz/nodes/SoShadowSpotLight.h\>

Inherits **SoSpotLight**.

### Public Member Functions

virtual **SoType** **getTypeId** (void) const\
 **SoShadowSpotLight** (void)\
 virtual void **GLRender** (**SoGLRenderAction** \*action)\

Public Member Functions inherited from **SoSpotLight** **SoSpotLight** (void)\

Public Member Functions inherited from **SoLight** virtual void **callback** (**SoCallbackAction** \*action)\

Public Member Functions inherited from **SoNode** void **setOverride** (const SbBool state)\
 SbBool **isOverride** (void) const\
 void **setNodeType** (const **NodeType** type)\
 **NodeType** **getNodeType** (void) const\
 virtual **SoNode** \* **copy** (SbBool copyconnections=FALSE) const\
 virtual SbBool **affectsState** (void) const\
 virtual void **doAction** (**SoAction** \*action)\
 virtual void **GLRenderBelowPath** (**SoGLRenderAction** \*action)\
 virtual void **GLRenderInPath** (**SoGLRenderAction** \*action)\
 virtual void **GLRenderOffPath** (**SoGLRenderAction** \*action)\
 virtual void **getBoundingBox** (**SoGetBoundingBoxAction** \*action)\
 virtual void **getMatrix** (**SoGetMatrixAction** \*action)\
 virtual void **handleEvent** (**SoHandleEventAction** \*action)\
 virtual void **pick** (**SoPickAction** \*action)\
 virtual void **rayPick** (**SoRayPickAction** \*action)\
 virtual void **search** (**SoSearchAction** \*action)\
 virtual void **write** (**SoWriteAction** \*action)\
 virtual void **audioRender** (**SoAudioRenderAction** \*action)\
 virtual void **getPrimitiveCount** (**SoGetPrimitiveCountAction** \*action)\
 virtual void **grabEventsSetup** (void)\
 virtual void **grabEventsCleanup** (void)\
 virtual void **startNotify** (void)\
 virtual void **notify** (**SoNotList** \*l)\
 SbUniqueId **getNodeId** (void) const\
 virtual **SoChildList** \* **getChildren** (void) const\
 virtual void **writeInstance** (**SoOutput** \*out)\
 virtual **SoNode** \* **addToCopyDict** (void) const\
 virtual void **copyContents** (const **SoFieldContainer** \*from, SbBool copyconnections)\
 virtual **SoFieldContainer** \* **copyThroughConnection** (void) const\

Public Member Functions inherited from **SoFieldContainer** void **setToDefaults** (void)\
 SbBool **hasDefaultValues** (void) const\
 SbBool **fieldsAreEqual** (const **SoFieldContainer** \*container) const\
 void **copyFieldValues** (const **SoFieldContainer** \*container, SbBool copyconnections=FALSE)\
 SbBool **set** (const char \*const fielddata)\
 void **get** (**SbString** &fielddata)\
 virtual int **getFields** (**SoFieldList** &l) const\
 virtual int **getAllFields** (**SoFieldList** &l) const\
 virtual **SoField** \* **getField** (const **SbName** &name) const\
 virtual **SoField** \* **getEventIn** (const **SbName** &name) const\
 virtual **SoField** \* **getEventOut** (const **SbName** &name) const\
 SbBool **getFieldName** (const **SoField** \*const field, **SbName** &name) const\
 SbBool **enableNotify** (const SbBool flag)\
 SbBool **isNotifyEnabled** (void) const\
 SbBool **set** (const char \*fielddata, **SoInput** \*input)\
 void **get** (**SbString** &fielddata, **SoOutput** \*out)\
 virtual SbBool **validateNewFieldValue** (**SoField** \*field, void \*newval)\
 virtual void **addWriteReference** (**SoOutput** \*out, SbBool isfromfield=FALSE)\
 SbBool **getIsBuiltIn** (void) const\
 virtual void **getFieldsMemorySize** (size\_t &managed, size\_t &unmanaged) const\
 void **setUserData** (void \*userdata) const\
 void \* **getUserData** (void) const\

Public Member Functions inherited from **SoBase** void **ref** (void) const\
 void **unref** (void) const\
 void **unrefNoDelete** (void) const\
 int32\_t **getRefCount** (void) const\
 void **touch** (void)\
 SbBool **isOfType** (**SoType** type) const\
 Returns TRUE if the type of this object is either of the same type or inherited from *type*.  virtual **SbName** **getName** (void) const\
 virtual void **setName** (const **SbName** &newname)\
 void **addAuditor** (void \*const auditor, const **SoNotRec::Type** type)\
 void **removeAuditor** (void \*const auditor, const **SoNotRec::Type** type)\
 const **SoAuditorList** & **getAuditors** (void) const\
 SbBool **shouldWrite** (void)\
 void **assertAlive** (void) const\

### Static Public Member Functions

static **SoType** **getClassTypeId** (void)\
 static void **initClass** (void)\

Static Public Member Functions inherited from **SoSpotLight** static **SoType** **getClassTypeId** (void)\
 static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.

Static Public Member Functions inherited from **SoLight** static **SoType** **getClassTypeId** (void)\
 static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.

Static Public Member Functions inherited from **SoNode** static uint32\_t **getCompatibilityTypes** (const **SoType** &nodetype)\
 static **SoType** **getClassTypeId** (void)\
 static **SoNode** \* **getByName** (const **SbName** &name)\
 static int **getByName** (const **SbName** &name, **SoNodeList** &l)\
 static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.     static void **initClasses** (void)\
 static SbUniqueId **getNextNodeId** (void)\
 static int **getActionMethodIndex** (const **SoType** type)\
 static void **getBoundingBoxS** (**SoAction** \*action, **SoNode** \*node)\
 static void **GLRenderS** (**SoAction** \*action, **SoNode** \*node)\
 static void **callbackS** (**SoAction** \*action, **SoNode** \*node)\
 static void **getMatrixS** (**SoAction** \*action, **SoNode** \*node)\
 static void **handleEventS** (**SoAction** \*action, **SoNode** \*node)\
 static void **pickS** (**SoAction** \*action, **SoNode** \*node)\
 static void **rayPickS** (**SoAction** \*action, **SoNode** \*node)\
 static void **searchS** (**SoAction** \*action, **SoNode** \*node)\
 static void **writeS** (**SoAction** \*action, **SoNode** \*node)\
 static void **audioRenderS** (**SoAction** \*action, **SoNode** \*node)\
 static void **getPrimitiveCountS** (**SoAction** \*action, **SoNode** \*node)\

Static Public Member Functions inherited from **SoFieldContainer** static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.     static **SoType** **getClassTypeId** (void)\
 This static method returns the **SoType** object associated with objects of this class.     static void **cleanupClass** (void)\
 static void **initCopyDict** (void)\
 static void **addCopy** (const **SoFieldContainer** \*orig, const **SoFieldContainer** \*copy)\
 static **SoFieldContainer** \* **checkCopy** (const **SoFieldContainer** \*orig)\
 static **SoFieldContainer** \* **findCopy** (const **SoFieldContainer** \*orig, const SbBool copyconnections)\
 static void **copyDone** (void)\

Static Public Member Functions inherited from **SoBase** static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.  static **SoType** **getClassTypeId** (void)\
 This static method returns the **SoType** object associated with objects of this class.  static void **addName** (**SoBase** \*const base, const char \*const name)\
 static void **removeName** (**SoBase** \*const base, const char \*const name)\
 static void **incrementCurrentWriteCounter** (void)\
 static void **decrementCurrentWriteCounter** (void)\
 static **SoBase** \* **getNamedBase** (const **SbName** &name, **SoType** type)\
 static int **getNamedBases** (const **SbName** &name, **SoBaseList** &baselist, **SoType** type)\
 static SbBool **read** (**SoInput** \*input, **SoBase** \*&base, **SoType** expectedtype)\
 static void **setInstancePrefix** (const **SbString** &c)\
 static void **setTraceRefs** (SbBool trace)\
 static SbBool **getTraceRefs** (void)\
 static SbBool **connectRoute** (**SoInput** \*input, const **SbName** &fromnodename, const **SbName** &fromfieldname, const **SbName** &tonodename, const **SbName** &tofieldname)\
 static SbBool **readRoute** (**SoInput** \*input)\

### Public Attributes

**SoSFNode** **shadowMapScene**\
 **SoSFFloat** **nearDistance**\
 **SoSFFloat** **farDistance**\

Public Attributes inherited from **SoSpotLight** **SoSFVec3f** **location**\
 **SoSFVec3f** **direction**\
 **SoSFFloat** **dropOffRate**\
 **SoSFFloat** **cutOffAngle**\

Public Attributes inherited from **SoLight** **SoSFBool** **on**\
 **SoSFFloat** **intensity**\
 **SoSFColor** **color**\

### Protected Member Functions

virtual const **SoFieldData** \* **getFieldData** (void) const\
 virtual **~SoShadowSpotLight** ()\

Protected Member Functions inherited from **SoSpotLight** virtual **~SoSpotLight** ()\

Protected Member Functions inherited from **SoLight** **SoLight** (void)\
 virtual **~SoLight** ()\

Protected Member Functions inherited from **SoNode** **SoNode** (void)\
 virtual **~SoNode** ()\
 virtual SbBool **readInstance** (**SoInput** \*in, unsigned short flags)\

Protected Member Functions inherited from **SoFieldContainer** **SoFieldContainer** (void)\
 virtual **~SoFieldContainer** ()\

Protected Member Functions inherited from **SoBase** **SoBase** (void)\
 virtual **~SoBase** ()\
 virtual void **destroy** (void)\
 SbBool **hasMultipleWriteRefs** (void) const\
 SbBool **writeHeader** (**SoOutput** \*out, SbBool isgroup, SbBool isengine) const\
 void **writeFooter** (**SoOutput** \*out) const\
 virtual const char \* **getFileFormatName** (void) const\
 virtual **SoNotRec** **createNotRec** (void)\

### Static Protected Member Functions

static const **SoFieldData** \*\* **getFieldDataPtr** (void)\

Static Protected Member Functions inherited from **SoSpotLight** static const **SoFieldData** \*\* **getFieldDataPtr** (void)\

Static Protected Member Functions inherited from **SoLight** static const **SoFieldData** \*\* **getFieldDataPtr** (void)\

Static Protected Member Functions inherited from **SoNode** static const **SoFieldData** \*\* **getFieldDataPtr** (void)\
 static void **setNextActionMethodIndex** (int index)\
 static int **getNextActionMethodIndex** (void)\
 static void **incNextActionMethodIndex** (void)\
 static void **setCompatibilityTypes** (const **SoType** &nodetype, const uint32\_t bitmask)\

Static Protected Member Functions inherited from **SoBase** static uint32\_t **getCurrentWriteCounter** (void)\
 static void **staticDataLock** (void)\
 static void **staticDataUnlock** (void)\

### Additional Inherited Members

Public Types inherited from **SoNode** enum **NodeType** { **INVENTOR** = 0x0000, **VRML1** = 0x0001, **VRML2** = 0x0002, **INVENTOR\_1** = 0x0004, **INVENTOR\_2\_0** = 0x0008, **INVENTOR\_2\_1** = 0x0010, **INVENTOR\_2\_5** = 0x0020, **INVENTOR\_2\_6** = 0x0040, **COIN\_1\_0** = 0x0080, **COIN\_2\_0** = 0x0100, **EXTENSION** = 0x0200, **COIN\_2\_2** = 0x0400, **COIN\_2\_3** = 0x0800, **COIN\_2\_4** = 0x1000, **INVENTOR\_5\_0** = 0x2000, **COIN\_2\_5** = 0x4000, **COIN\_3\_0** = 0x8000, **INVENTOR\_6\_0** = 0x10000, **COIN\_4\_0** = 0x20000 }\

Protected Types inherited from **SoBase** enum **BaseFlags** { **IS\_ENGINE** = 0x01, **IS\_GROUP** = 0x02 }\

Protected Attributes inherited from **SoNode** SbUniqueId **uniqueId**\

Protected Attributes inherited from **SoFieldContainer** SbBool **isBuiltIn**\

Static Protected Attributes inherited from **SoNode** static SbUniqueId **nextUniqueId** = 1\
 static int **nextActionMethodIndex** = 0\

## Detailed Description

The **SoShadowSpotLight** class is a node for setting up a spot light which casts shadows.

This node can be used instead of a normal spot light if you need to improve the performance by supplying a simplified scene graph to be used when rendering the shadow map(s). For instance, the shadow map scene graph doesn't need any textures or materials, and any non-casters can also be excluded from this scene graph. It's more optimal to use this node than to use the **SoShadowStyle** node to control this, at the cost of some extra application complexity.

It's especially useful if you have a scene with few shadow caster nodes and lots of shadow receiver nodes.

Currently, this node must be placed somewhere in the **SoShadowGroup** subgraph to cast shadows.

**FILE FORMAT/DEFAULTS:**

```
ShadowSpotLight {
  shadowMapScene NULL
  nearDistance -1
  farDistance -1
}
```

Here is the example from **SoShadowGroup**, modified to use **SoShadowSpotLight** instead of a normal **SoSpotLight**. Notice that only the sphere casts shadows.

```
DirectionalLight { direction 0 0 -1 intensity 0.2 }
ShadowGroup {
  quality 1 # to get per pixel lighting
  ShadowSpotLight {
    location -8 -8 8.0
    direction 1 1 -1
    cutOffAngle 0.35
    dropOffRate 0.7
    shadowMapScene
    DEF sphere Separator {
        Complexity { value 1.0 }
        Material { diffuseColor 1 1 0 specularColor 1 1 1 shininess 0.9 }
        Shuttle { translation0 -3 1 0 translation1 3 -5 0 speed 0.25 on TRUE }
        Translation { translation -5 0 2 }
        Sphere { radius 2.0 }
      }
  }
  # need to insert the sphere in the regular scene graph as well
  USE sphere
  Separator {
    Material { diffuseColor 1 0 0 specularColor 1 1 1 shininess 0.9 }
    Shuttle { translation0 0 -5 0 translation1 0 5 0 speed 0.15 on TRUE }
    Translation { translation 0 0 -3 }
    Cube { depth 1.8 }
  }
  Separator {
    Material { diffuseColor 0 1 0 specularColor 1 1 1 shininess 0.9 }
    Shuttle { translation0 -5 0 0 translation1 5 0 0 speed 0.3 on TRUE }
    Translation { translation 0 0 -3 }
    Cube { }
  }
  Coordinate3 { point [ -10 -10 -3, 10 -10 -3, 10 10 -3, -10 10 -3 ] }
  Material { specularColor 1 1 1 shininess 0.9 }
  Complexity { textureQuality 0.1 }
  Texture2 { image 2 2 3 0xffffff 0x225588 0x225588 0xffffff }
  Texture2Transform { scaleFactor 4 4 }
  FaceSet { numVertices 4 }
}
```

**Since**

Coin 3.0

## Constructor & Destructor Documentation

### SoShadowSpotLight::SoShadowSpotLight (void )

Constructor.

### SoShadowSpotLight::~SoShadowSpotLight () \[protected\], \[virtual\]

Destructor.

## Member Function Documentation

### SoType SoShadowSpotLight::getClassTypeId (void ) \[static\]

This static method returns the **SoType** object associated with objects of this class.

### SoType SoShadowSpotLight::getTypeId (void ) const \[virtual\]

Returns the type identification of an object derived from a class inheriting **SoBase**. This is used for runtime type checking and "downward" casting.

Reimplemented from **SoSpotLight**.

### const SoFieldData \*\* SoShadowSpotLight::getFieldDataPtr (void ) \[static\], \[protected\]

*This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.*\

 Returns the **SoFieldData** class which holds information about fields in this node.

### const SoFieldData \* SoShadowSpotLight::getFieldData (void ) const \[protected\], \[virtual\]

Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL.

Reimplemented from **SoSpotLight**.

### void SoShadowSpotLight::initClass (void ) \[static\]

### void SoShadowSpotLight::GLRender (SoGLRenderAction \* action) \[virtual\]

Action method for the **SoGLRenderAction**.

This is called during rendering traversals. Nodes influencing the rendering state in any way or want to throw geometry primitives at OpenGL override this method.

Reimplemented from **SoSpotLight**.

## Member Data Documentation

### SoSFNode SoShadowSpotLight::shadowMapScene

The shadow map scene graph. If this is NULL (the default), the node will behave as a normal **SoSpotLight** node.

### SoSFFloat SoShadowSpotLight::nearDistance

Can be used to set a fixed near distance for this spot light. The value in this field will be used if it is set to \> 0.0. Default value is -1.0.

### SoSFFloat SoShadowSpotLight::farDistance

Can be used to set a fixed far distance for this spot light. The value in this field will be used if it is set to \> 0.0. Default value is -1.0.

## Author

Generated automatically by Doxygen for Coin from the source code.
