Report float and half-float color attachments on GL and GLES
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 68/100
Línea de trabajo
Start in source/renderer/ore/gl/ore_context_gl.cpp, where ContextGL::Make() sets GL feature flags and checks extensions. Review the desktop GL and OpenGL ES branches, then build or run the renderer's available GL tests. Done when desktop GL reports float and half-float color attachments, desktop GL 4.3+ reports storage buffers when fragment shader storage blocks are supported, and GLES detects GL_EXT_color_buffer_half_float.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Report float and half-float color attachments on GL and GLES.
- source/renderer/ore/gl/ore_context_gl.cpp: Ore GL features: report float and half-float color attachments on desktop GL, where they are core since 3.0 and the ES-only GL_EXT_color_buffer_float is never listed; desktop GL 4.3+ also reports storageBuffers when fragment shaders can bind shader storage blocks
- source/renderer/ore/gl/ore_context_gl.cpp: Ore GL features: detect GL_EXT_color_buffer_half_float on OpenGL ES, which makes 16-bit float color attachments renderable without the full-float extension
diff --git a/source/renderer/ore/gl/ore_context_gl.cpp b/source/renderer/ore/gl/ore_context_gl.cpp
index 719846374383899a0cf1a0147898a6414b8a4b4a..90ccf9c95c1b557af44258701d75769168d666a1 100644
--- a/source/renderer/ore/gl/ore_context_gl.cpp
+++ b/source/renderer/ore/gl/ore_context_gl.cpp
@@ -341,6 +341,23 @@ std::unique_ptr<ContextGL> ContextGL::Make()
f.etc2 = true; // GLES3 mandates ETC2.
f.astc = false;
+#ifdef RIVE_DESKTOP_GL
+ f.colorBufferFloat = true;
+ f.colorBufferHalfFloat = true;
+#ifdef GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS
+ // Desktop GL 4.3+ binds shader storage buffers to graphics stages.
+ {
+ GLint major = 0, minor = 0, fragmentSSBOs = 0;
+ glGetIntegerv(GL_MAJOR_VERSION, &major);
+ glGetIntegerv(GL_MINOR_VERSION, &minor);
+ if (major > 4 || (major == 4 && minor >= 3))
+ glGetIntegerv(GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,
+ &fragmentSSBOs);
+ f.storageBuffers = fragmentSSBOs > 0;
+ }
+#endif
+#endif
+
// Query limits.
GLint maxTexSize = 0, maxCubeSize = 0, max3DSize = 0, maxUBOSize = 0;
GLint maxDrawBuffers = 0, maxVertexAttribs = 0, maxTexUnits = 0;
@@ -383,6 +400,8 @@ std::unique_ptr<ContextGL> ContextGL::Make()
f.colorBufferFloat = true;
f.colorBufferHalfFloat = true;
}
+ else if (strcmp(ext, "GL_EXT_color_buffer_half_float") == 0)
+ f.colorBufferHalfFloat = true;
else if (strcmp(ext, "GL_EXT_texture_filter_anisotropic") == 0)
f.anisotropicFiltering = true;
else if (strcmp(ext, "GL_KHR_texture_compression_astc_ldr") == 0)
- Lenguaje dominante
- C++
- Estrellas
- 1.3k
- Forks
- 133
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de rive-app/rive-runtime
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 83/100
rive-app/rive-runtime#143 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
rive-app/rive-runtime#141 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
rive-app/rive-runtime#140 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 91/100
rive-app/rive-runtime#137 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
rive-app/rive-runtime#134 ·
Todos los issues de rive-app/rive-runtime
Issues similares
-
mlir
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
llvm/llvm-project#241070 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Page request: clang-replAbiertohelp wanted new command
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
tldr-pages/tldr#25111 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Ask the `ServerHelper` for fresh headers on every poll in `Future::get`, as is done for cookiesAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
NVIDIA/cuda-quantum#5886 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día