Documentation ¶
Overview ¶
Package renderer implements the scene renderer.
Index ¶
- Constants
- type ProgSpecs
- type Renderer
- func (r *Renderer) AddChunk(name, source string)
- func (r *Renderer) AddDefaultShaders() error
- func (r *Renderer) AddProgram(name, vertex, frag string, others ...string)
- func (r *Renderer) AddShader(name, source string)
- func (r *Renderer) ObjectSorting() bool
- func (r *Renderer) Panel3D() gui.IPanel
- func (r *Renderer) Render(icam camera.ICamera) (bool, error)
- func (r *Renderer) SetGui(gui gui.IPanel)
- func (r *Renderer) SetGuiPanel3D(panel3D gui.IPanel)
- func (r *Renderer) SetObjectSorting(sort bool)
- func (r *Renderer) SetScene(scene core.INode)
- func (r *Renderer) Stats() Stats
- type ShaderSpecs
- type Shaman
- func (sm *Shaman) AddChunk(name, source string)
- func (sm *Shaman) AddDefaultShaders() error
- func (sm *Shaman) AddProgram(name, vertexName, fragName string, others ...string)
- func (sm *Shaman) AddShader(name, source string)
- func (sm *Shaman) GenProgram(specs *ShaderSpecs) (*gls.Program, error)
- func (sm *Shaman) Init(gs *gls.GLS)
- func (sm *Shaman) SetProgram(s *ShaderSpecs) (bool, error)
- type Stats
Constants ¶
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 ¶
NewRenderer creates and returns a pointer to a new Renderer.
func (*Renderer) AddDefaultShaders ¶
AddDefaultShaders adds to this renderer's shader manager all default include chunks, shaders and programs statically registered.
func (*Renderer) AddProgram ¶
AddProgram adds the program with the specified name, with associated vertex and fragment shaders (previously registered).
func (*Renderer) AddShader ¶
AddShader adds a shader program with the specified name and source code.
func (*Renderer) ObjectSorting ¶
ObjectSorting returns whether objects will be sorted before rendering.
func (*Renderer) Render ¶
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 ¶
SetGui sets the gui panel which contains the Gui to render. If set to nil, no Gui will be rendered.
func (*Renderer) SetGuiPanel3D ¶
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 ¶
SetObjectSorting sets whether objects will be sorted before rendering.
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 (*Shaman) AddDefaultShaders ¶
AddDefaultShaders adds to this shader manager all default include chunks, shaders and programs statically registered.
func (*Shaman) AddProgram ¶
AddProgram adds a program with the specified name and associated vertex and fragment shaders names (previously registered)
func (*Shaman) GenProgram ¶
func (sm *Shaman) GenProgram(specs *ShaderSpecs) (*gls.Program, error)
GenProgram generates shader program from the specified specs
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.