util.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <string>
  5. #include "common/assert.h"
  6. #include "video_core/renderer_opengl/gl_resource_manager.h"
  7. namespace OpenGL {
  8. static inline void ReplaceInclude(std::string& shader_source, std::string_view include_name,
  9. std::string_view include_content) {
  10. const std::string include_string = fmt::format("#include \"{}\"", include_name);
  11. const std::size_t pos = shader_source.find(include_string);
  12. ASSERT(pos != std::string::npos);
  13. shader_source.replace(pos, include_string.size(), include_content);
  14. };
  15. static inline OGLSampler CreateBilinearSampler() {
  16. OGLSampler sampler;
  17. sampler.Create();
  18. glSamplerParameteri(sampler.handle, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  19. glSamplerParameteri(sampler.handle, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  20. glSamplerParameteri(sampler.handle, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  21. glSamplerParameteri(sampler.handle, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
  22. glSamplerParameteri(sampler.handle, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
  23. return sampler;
  24. }
  25. static inline OGLSampler CreateNearestNeighborSampler() {
  26. OGLSampler sampler;
  27. sampler.Create();
  28. glSamplerParameteri(sampler.handle, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  29. glSamplerParameteri(sampler.handle, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  30. glSamplerParameteri(sampler.handle, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  31. glSamplerParameteri(sampler.handle, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
  32. glSamplerParameteri(sampler.handle, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
  33. return sampler;
  34. }
  35. } // namespace OpenGL