Documentation

Overview

    Package renderer implements the scene renderer.

    Index

    Constants

    View Source
    const GLSL_VERSION = "330 core"

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    type ProgSpecs

    type ProgSpecs struct {
    	// contains filtered or unexported fields
    }

      ProgSpecs represents a compiled shader program along with its specs

      type Renderer

      type Renderer struct {
      	// contains filtered or unexported fields
      }

        Renderer renders a 3D scene and/or a 2D GUI on the current window.

        func NewRenderer

        func NewRenderer(gs *gls.GLS) *Renderer

          NewRenderer creates and returns a pointer to a new Renderer.

          func (*Renderer) AddChunk

          func (r *Renderer) AddChunk(name, source string)

            AddChunk adds a shader chunk with the specified name and source code.

            func (*Renderer) AddDefaultShaders

            func (r *Renderer) AddDefaultShaders() error

              AddDefaultShaders adds to this renderer's shader manager all default include chunks, shaders and programs statically registered.

              func (*Renderer) AddProgram

              func (r *Renderer) AddProgram(name, vertex, frag string, others ...string)

                AddProgram adds the program with the specified name, with associated vertex and fragment shaders (previously registered).

                func (*Renderer) AddShader

                func (r *Renderer) AddShader(name, source string)

                  AddShader adds a shader program with the specified name and source code.

                  func (*Renderer) ObjectSorting

                  func (r *Renderer) ObjectSorting() bool

                    ObjectSorting returns whether objects will be sorted before rendering.

                    func (*Renderer) Panel3D

                    func (r *Renderer) Panel3D() gui.IPanel

                      Panel3D returns the current gui panel over the 3D scene.

                      func (*Renderer) Render

                      func (r *Renderer) Render(icam camera.ICamera) (bool, error)

                        Render renders the previously set Scene and Gui using the specified camera. Returns an indication if anything was rendered and an error.

                        func (*Renderer) SetGui

                        func (r *Renderer) SetGui(gui gui.IPanel)

                          SetGui sets the gui panel which contains the Gui to render. If set to nil, no Gui will be rendered.

                          func (*Renderer) SetGuiPanel3D

                          func (r *Renderer) SetGuiPanel3D(panel3D gui.IPanel)

                            SetGuiPanel3D sets the gui panel inside which the 3D scene is shown. This informs the renderer that the Gui elements over this panel must be redrawn even if they didn't change. This panel panel must not be renderable, otherwise it will cover the 3D scene.

                            func (*Renderer) SetObjectSorting

                            func (r *Renderer) SetObjectSorting(sort bool)

                              SetObjectSorting sets whether objects will be sorted before rendering.

                              func (*Renderer) SetScene

                              func (r *Renderer) SetScene(scene core.INode)

                                SetScene sets the 3D scene to be rendered. If set to nil, no 3D scene will be rendered.

                                func (*Renderer) Stats

                                func (r *Renderer) Stats() Stats

                                  Stats returns a copy of the statistics for the last frame. Should be called after the frame was rendered.

                                  type ShaderSpecs

                                  type ShaderSpecs struct {
                                  	Name             string             // Shader name
                                  	Version          string             // GLSL version
                                  	ShaderUnique     bool               // indicates if shader is independent of lights and textures
                                  	UseLights        material.UseLights // Bitmask indicating which lights to consider
                                  	AmbientLightsMax int                // Current number of ambient lights
                                  	DirLightsMax     int                // Current Number of directional lights
                                  	PointLightsMax   int                // Current Number of point lights
                                  	SpotLightsMax    int                // Current Number of spot lights
                                  	MatTexturesMax   int                // Current Number of material textures
                                  	Defines          gls.ShaderDefines  // Additional shader defines
                                  }

                                    ShaderSpecs describes the specification of a compiled shader program

                                    type Shaman

                                    type Shaman struct {
                                    	// contains filtered or unexported fields
                                    }

                                      Shaman is the shader manager

                                      func NewShaman

                                      func NewShaman(gs *gls.GLS) *Shaman

                                        NewShaman creates and returns a pointer to a new shader manager

                                        func (*Shaman) AddChunk

                                        func (sm *Shaman) AddChunk(name, source string)

                                          AddChunk adds a shader chunk with the specified name and source code

                                          func (*Shaman) AddDefaultShaders

                                          func (sm *Shaman) AddDefaultShaders() error

                                            AddDefaultShaders adds to this shader manager all default include chunks, shaders and programs statically registered.

                                            func (*Shaman) AddProgram

                                            func (sm *Shaman) AddProgram(name, vertexName, fragName string, others ...string)

                                              AddProgram adds a program with the specified name and associated vertex and fragment shaders names (previously registered)

                                              func (*Shaman) AddShader

                                              func (sm *Shaman) AddShader(name, source string)

                                                AddShader adds a shader program with the specified name and source code

                                                func (*Shaman) GenProgram

                                                func (sm *Shaman) GenProgram(specs *ShaderSpecs) (*gls.Program, error)

                                                  GenProgram generates shader program from the specified specs

                                                  func (*Shaman) Init

                                                  func (sm *Shaman) Init(gs *gls.GLS)

                                                    Init initializes the shader manager

                                                    func (*Shaman) SetProgram

                                                    func (sm *Shaman) SetProgram(s *ShaderSpecs) (bool, error)

                                                      SetProgram sets the shader program to satisfy the specified specs. Returns an indication if the current shader has changed and a possible error when creating a new shader program. Receives a copy of the specs because it changes the fields which specify the number of lights depending on the UseLights flags.

                                                      type Stats

                                                      type Stats struct {
                                                      	Graphics int // Number of graphic objects rendered
                                                      	Lights   int // Number of lights rendered
                                                      	Panels   int // Number of Gui panels rendered
                                                      	Others   int // Number of other objects rendered
                                                      }

                                                        Stats describes how many object types were rendered. It is cleared at the start of each render.

                                                        Directories

                                                        Path Synopsis
                                                        Package shaders contains the several shaders used by the engine
                                                        Package shaders contains the several shaders used by the engine