============
Transparency
============

Transparency refers to passing light through a 2D surface. It is enabled by setting the "transmission" component of an object's color (using ``Set_Color``). 

The transmission value controls the light that should be transmitted through the surface. "faces=(transmission=black)" describes a perfectly opaque surface, "faces=(transmission=white)" describes a perfectly clear material, while "faces=(transmission=green)" describes a surface that is opaque to red and blue, but transparent to green. The image below depicts the borromean rings, with the blue one being drawn with transparency:

.. image:: images/0631a_transparency_example.jpg

*Transparency example*

Blending objects with the color of underlying objects is a basic (and obvious) requirement to produce a scene with transparent objects. However, if a transparent object has faces that overlap with one another, or if multiple (and therefore potentially overlapping) transparent objects are present in the scene, they can only be drawn accurately if their faces are sorted with respect to one another. In addition to the basic blending requirement, HOOPS/3dGS by default will perform extra work to sort the faces of the transparent objects. This results in a more accurate picture, but at the cost of rendering speed. The developer can control both the transparency sorting algorithm and the blending method used to handle the transparent objects by setting several "transparency options" in ``Set_Rendering_Options``.  

For a detailed discussion of the advantages and costs for different sorting algorithms see :ref:`the transparency section <prog_guide/3dgs/07_4_performance_rendering_selection:Transparency>`.
  