renderer

package
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2024 License: BSD-2-Clause Imports: 15 Imported by: 1

Documentation

Overview

Package renderer implements the scene renderer.

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 Postprocessor added in v0.3.2

type Postprocessor struct {
	Width  int32
	Height int32
	Fbo    uint32
	Tex    uint32
	Vao    uint32
	Prg    *gls.Program

	Renderer *Renderer
	// contains filtered or unexported fields
}

func (*Postprocessor) Render added in v0.3.2

func (pp *Postprocessor) Render(fbwidth, fbheight int, render func())

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 {
	Shaman // Embedded shader manager
	// contains filtered or unexported fields
}

Renderer renders a scene containing 3D objects and/or 2D GUI elements.

func NewRenderer

func NewRenderer(gs *gls.GLS) *Renderer

NewRenderer creates and returns a pointer to a new Renderer.

func (*Renderer) CreatePostprocessor added in v0.3.2

func (r *Renderer) CreatePostprocessor(width, height int32, vertexShaderSource, fragmentShaderSource string) *Postprocessor

func (*Renderer) ObjectSorting

func (r *Renderer) ObjectSorting() bool

ObjectSorting returns whether objects will be sorted before rendering.

func (*Renderer) Render

func (r *Renderer) Render(scene core.INode, cam camera.ICamera) error

Render renders the specified scene using the specified camera. Returns an an error.

func (*Renderer) SetObjectSorting

func (r *Renderer) SetObjectSorting(sort bool)

SetObjectSorting sets whether objects will be sorted before rendering.

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 {
	GraphicMats int // Number of graphic materials 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 objects of each type are being 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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL