Skip to content

barcharcraz/Phosphor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Phosphor

A nimrod library for interfacing with video graphics accelerators

Phosphor centers around the TDrawObject structure. This structure contains all the information needed to issue a draw call, save for things like the viewport size and clear color. To create a DrawObject you call initDrawObject with a handle to a shader program. Phosphor inspects the shader program and populates its internal data structures before returning a new DrawObject to you.

Phosphor keeps track of the names and locations of uniform blocks and sampler variables in your shader so that you can set them with the standard . syntax. So for example if I had a shader like

#version 140
out vec4 outputColor;
uniform ColorBlock {
  vec4 color;
};
void main() {
  outputColor = color;
}

I could populate the ColorBlock uniform block by simply writing obj.ColorBlock = [0.0'f32m 1.0, 0.0, 1.0] in nimrod. This works for more than just literal arrays, any kind of structure that has the same data layout as the uniform block can be used. For this reason it is recommended that you use the std140 layout on your uniform interface blocks.

A similar syntax can be used to attach textures to shaders, note that textures are attached directly to samplers, there is no need to bind a texture to an image unit and then bind the sampler to the same image unit. The rationale for this is that the library handles assigning image units and could even decide to use bindless textures if the graphics card supports them.

Textures are not managed through Phosphor, API texture handles (GLuints) are directly assigned to samplers, there are many image loading libraries out there already, the examples use the FreeImage library.

About

A nimrod library for interfaceing with video graphics accelerators

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages