DarkRadiant shader system: Difference between revisions
From The DarkMod Wiki
Jump to navigationJump to search
mNo edit summary |
use category tag |
||
(7 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
<div style="float:right"> | <div style="font-size: 10px; float:right; padding: 10px; padding-bottom: 5px; padding-right: 5px; background-color: #EEEEEE; border: 1px solid #555555;"> | ||
[ | [[Image:Shadersystem.jpg|150px]] | ||
DarkRadiant Shader System | |||
</div> | </div> | ||
The | The Shader System module is initialised during DarkRadiant startup and parses the material files during this phase. | ||
It consists of a few components: | It consists of a few components: | ||
* The [[DarkRadiant ShaderLibrary|ShaderLibrary]] which holds all the named [[ShaderDefinition|ShaderDefinitions]] and named Shader objects. It gets populated by the ShaderFileParser during startup or when the user requests a shader refresh. | * The [[DarkRadiant ShaderLibrary|ShaderLibrary]] which holds all the named [[DarkRadiant ShaderDefinition|ShaderDefinitions]] and named [[DarkRadiant Shader|Shader]] objects. It gets populated by the [[DarkRadiant ShaderFileParser|ShaderFileParser]] during startup or when the user requests a shader refresh. | ||
* The [[DarkRadiant GLTextureManager|GLTextureManager]], responsible for "realising" the actual Texture objects (this includes image post-processing like gamma-adjustment and resampling). | * The [[DarkRadiant GLTextureManager|GLTextureManager]], responsible for "realising" the actual Texture objects (this includes image post-processing like gamma-adjustment and resampling). | ||
* The actual [[DarkRadiant Shader|Shader]] objects. | * The actual [[DarkRadiant Shader|Shader]] objects. | ||
Line 13: | Line 15: | ||
Note that the actual image data isn't loaded until they are requested by the render system. If the latter requests a TexturePtr by calling Shader::getDiffuse(), the Shader object checks the contained TexturePtr for realisation. If the TexturePtr is still NULL, it sends a request to the [[DarkRadiant GLTextureManager|GLTextureManager]] for the Texture to be realised. This happens by passing the [[DarkRadiant TextureConstructor|TextureConstructor]] to the GLTextureManager, which can be used to retrieve an Image object containing the raw pixel data. | Note that the actual image data isn't loaded until they are requested by the render system. If the latter requests a TexturePtr by calling Shader::getDiffuse(), the Shader object checks the contained TexturePtr for realisation. If the TexturePtr is still NULL, it sends a request to the [[DarkRadiant GLTextureManager|GLTextureManager]] for the Texture to be realised. This happens by passing the [[DarkRadiant TextureConstructor|TextureConstructor]] to the GLTextureManager, which can be used to retrieve an Image object containing the raw pixel data. | ||
{{darkradiant-internal|sort=Shader}} | |||
Latest revision as of 23:11, 11 November 2007
The Shader System module is initialised during DarkRadiant startup and parses the material files during this phase.
It consists of a few components:
- The ShaderLibrary which holds all the named ShaderDefinitions and named Shader objects. It gets populated by the ShaderFileParser during startup or when the user requests a shader refresh.
- The GLTextureManager, responsible for "realising" the actual Texture objects (this includes image post-processing like gamma-adjustment and resampling).
- The actual Shader objects.
The Shader and Texture objects are allocated on the heap using boost::shared_ptrs.
Note that the actual image data isn't loaded until they are requested by the render system. If the latter requests a TexturePtr by calling Shader::getDiffuse(), the Shader object checks the contained TexturePtr for realisation. If the TexturePtr is still NULL, it sends a request to the GLTextureManager for the Texture to be realised. This happens by passing the TextureConstructor to the GLTextureManager, which can be used to retrieve an Image object containing the raw pixel data.