material_pbr.go 911 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package gltf
  2. import (
  3. "fmt"
  4. "github.com/g3n/engine/material"
  5. "github.com/g3n/engine/math32"
  6. "github.com/g3n/engine/texture"
  7. )
  8. func (g *GLTF) loadMaterialPBR(m *Material) (material.IMaterial, error) {
  9. // Currently simulating PBR material with our common materials
  10. pbr := m.PbrMetallicRoughness
  11. if pbr == nil {
  12. return nil, fmt.Errorf("PbrMetallicRoughness not supplied")
  13. }
  14. pm := material.NewPhong(&math32.Color{pbr.BaseColorFactor[0], pbr.BaseColorFactor[1], pbr.BaseColorFactor[2]})
  15. pm.SetAmbientColor(&math32.Color{1, 1, 1})
  16. pm.SetEmissiveColor(&math32.Color{0, 0, 0})
  17. //pm.SetSpecularColor(&math32.Color{0, 0, 0})
  18. //pm.SetShininess(0)
  19. //pm.SetOpacity(1)
  20. // BaseColorTexture
  21. var tex *texture.Texture2D
  22. var err error
  23. if pbr.BaseColorTexture != nil {
  24. tex, err = g.loadTextureInfo(pbr.BaseColorTexture)
  25. if err != nil {
  26. return nil, err
  27. }
  28. pm.AddTexture(tex)
  29. }
  30. return pm, nil
  31. }