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 = "100"
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) SetGuiPanel3D ¶
--phone GUI TODO--
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 // --phone GUI TODO-- 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.