SamplerConfig.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) 2022, Stephan Unverwerth <s.unverwerth@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibGPU/Image.h>
  8. #include <LibGfx/Vector4.h>
  9. namespace GPU {
  10. enum class TextureFilter {
  11. Nearest,
  12. Linear,
  13. };
  14. enum class MipMapFilter {
  15. None,
  16. Nearest,
  17. Linear,
  18. };
  19. enum class TextureWrapMode {
  20. Repeat,
  21. MirroredRepeat,
  22. Clamp,
  23. ClampToBorder,
  24. ClampToEdge,
  25. };
  26. enum class TextureEnvMode {
  27. Modulate,
  28. Replace,
  29. Decal,
  30. Add,
  31. };
  32. struct SamplerConfig final {
  33. RefPtr<Image> bound_image;
  34. MipMapFilter mipmap_filter { MipMapFilter::Nearest };
  35. TextureFilter texture_mag_filter { TextureFilter::Linear };
  36. TextureFilter texture_min_filter { TextureFilter::Linear };
  37. TextureWrapMode texture_wrap_u { TextureWrapMode::Repeat };
  38. TextureWrapMode texture_wrap_v { TextureWrapMode::Repeat };
  39. TextureWrapMode texture_wrap_w { TextureWrapMode::Repeat };
  40. FloatVector4 border_color { 0, 0, 0, 1 };
  41. TextureEnvMode fixed_function_texture_env_mode { TextureEnvMode::Modulate };
  42. };
  43. }