zworld/engine/render/uniform/light.go
2024-01-14 22:56:06 +08:00

42 lines
832 B
Go

package uniform
import (
"fmt"
"unsafe"
"zworld/engine/renderapi/color"
"zworld/plugins/math/mat4"
"zworld/plugins/math/vec4"
)
type Light struct {
ViewProj [4]mat4.T
Shadowmap [4]uint32
Distance [4]float32
Color color.T
Position vec4.T
Type uint32
Intensity float32
Range float32
Falloff float32
_padding float32
}
type LightSettings struct {
AmbientColor color.T
AmbientIntensity float32
Count int32
ShadowSamples int32
ShadowSampleRadius float32
ShadowBias float32
NormalOffset float32
_padding [75]float32
}
func init() {
lightSz := unsafe.Sizeof(Light{})
settingSz := unsafe.Sizeof(LightSettings{})
if lightSz != settingSz {
panic(fmt.Sprintf("Light (%d) and LightSetting (%d) must have equal size", lightSz, settingSz))
}
}