shader.go 647 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package gg
  2. import (
  3. "github.com/hajimehoshi/ebiten/v2"
  4. //"fmt"
  5. )
  6. type ShaderOptions struct {
  7. Shader *Shader
  8. Uniforms map[string] any
  9. Images [4]*Image
  10. }
  11. type Shader = ebiten.Shader
  12. var (
  13. // The shader is for example only.
  14. SolidWhiteColorShader = MustNewShader([]byte(`
  15. package main
  16. //var Random float
  17. func Fragment(dst vec4, src vec2, _ vec4) vec4 {
  18. c := imageSrc0UnsafeAt(src)
  19. return c * sin(dst.x)
  20. }
  21. `))
  22. )
  23. func MustNewShader(src []byte) (*Shader) {
  24. shader, err := NewShader(src)
  25. if err != nil {
  26. panic(err)
  27. }
  28. return shader
  29. }
  30. func NewShader(src []byte) (*Shader, error) {
  31. return ebiten.NewShader(src)
  32. }