]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/module.h
Update and improve documentation
[libs/gl.git] / source / core / module.h
index 9ac54d328ee42a86b97fed32e82383a171138739..1ccbbf3d5c0d03fb3ca144d9f9def0231112fbf0 100644 (file)
@@ -21,6 +21,14 @@ public:
 
 class Resources;
 
+/**
+Base class for shader modules.  Internal representation depends on the
+concrete type.
+
+Modules can be loaded from files.
+
+Applications normally use the Program class to access shaders.
+*/
 class Module
 {
 public:
@@ -37,13 +45,24 @@ public:
 
        virtual Format get_format() const = 0;
 
+       /** Sets the module's content from GLSL source code. */
        void set_source(const std::string &);
-       void load_source(IO::Base &, Resources *, const std::string &);
+
+       /** Loads GLSL source from a file or other I/O object.  Any import
+       statements are resolved using res. */
+       void load_source(IO::Base &, Resources *res, const std::string &name);
+
+       /** Loads GLSL source from a file or other I/O object.  Only builtin
+       shader fragments can be imported. */
        void load_source(IO::Base &, const std::string &);
+
 private:
        virtual void compile(SL::Compiler &) = 0;
 };
 
+/**
+A shader module in GLSL source code format.
+*/
 class GlslModule: public Module
 {
 private:
@@ -61,6 +80,15 @@ public:
        const SL::SourceMap &get_source_map() const { return source_map; }
 };
 
+/**
+A shader module in SPIR-V binary format.
+
+When the module's contents are set from GLSL source, it will be automatically
+compiled to SPIR-V.  Pre-compiled SPIR-V modules can also be loaded.
+
+Afterwards reflection data is available, providing information about variables
+forming the module's interface.
+*/
 class SpirVModule: public Module
 {
 public:
@@ -210,6 +238,7 @@ private:
 public:
        virtual Format get_format() const { return SPIR_V; }
 
+       /** Loads a SPIR-V binary from a file or other I/O object. */
        void load_code(IO::Base &);
 private:
        virtual void compile(SL::Compiler &);