瀏覽代碼

Added GL 3.1 core profile shader patching.

bkaradzic 12 年之前
父節點
當前提交
7e656fa4ef
共有 68 個文件被更改,包括 34 次插入6 次删除
  1. 二進制
      examples/runtime/shaders/glsl/fs_bump.bin
  2. 二進制
      examples/runtime/shaders/glsl/fs_callback.bin
  3. 二進制
      examples/runtime/shaders/glsl/fs_cubes.bin
  4. 二進制
      examples/runtime/shaders/glsl/fs_hdr_blur.bin
  5. 二進制
      examples/runtime/shaders/glsl/fs_hdr_bright.bin
  6. 二進制
      examples/runtime/shaders/glsl/fs_hdr_lum.bin
  7. 二進制
      examples/runtime/shaders/glsl/fs_hdr_lumavg.bin
  8. 二進制
      examples/runtime/shaders/glsl/fs_hdr_mesh.bin
  9. 二進制
      examples/runtime/shaders/glsl/fs_hdr_skybox.bin
  10. 二進制
      examples/runtime/shaders/glsl/fs_hdr_tonemap.bin
  11. 二進制
      examples/runtime/shaders/glsl/fs_instancing.bin
  12. 二進制
      examples/runtime/shaders/glsl/fs_mesh.bin
  13. 1 3
      examples/runtime/shaders/glsl/fs_raymarching.bin
  14. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_color_lightning.bin
  15. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_color_texture.bin
  16. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svbackblank.bin
  17. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svbackcolor.bin
  18. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex1.bin
  19. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex2.bin
  20. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svfrontblank.bin
  21. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svfrontcolor.bin
  22. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex1.bin
  23. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex2.bin
  24. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svside.bin
  25. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svsideblank.bin
  26. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svsidecolor.bin
  27. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_svsidetex.bin
  28. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_texture.bin
  29. 二進制
      examples/runtime/shaders/glsl/fs_shadowvolume_texture_lightning.bin
  30. 二進制
      examples/runtime/shaders/glsl/fs_stencil_color_black.bin
  31. 二進制
      examples/runtime/shaders/glsl/fs_stencil_color_lightning.bin
  32. 二進制
      examples/runtime/shaders/glsl/fs_stencil_color_texture.bin
  33. 二進制
      examples/runtime/shaders/glsl/fs_stencil_texture.bin
  34. 二進制
      examples/runtime/shaders/glsl/fs_stencil_texture_lightning.bin
  35. 二進制
      examples/runtime/shaders/glsl/fs_tree.bin
  36. 二進制
      examples/runtime/shaders/glsl/fs_update.bin
  37. 二進制
      examples/runtime/shaders/glsl/fs_update_cmp.bin
  38. 二進制
      examples/runtime/shaders/glsl/vs_bump.bin
  39. 二進制
      examples/runtime/shaders/glsl/vs_bump_instanced.bin
  40. 二進制
      examples/runtime/shaders/glsl/vs_callback.bin
  41. 二進制
      examples/runtime/shaders/glsl/vs_cubes.bin
  42. 二進制
      examples/runtime/shaders/glsl/vs_hdr_blur.bin
  43. 二進制
      examples/runtime/shaders/glsl/vs_hdr_bright.bin
  44. 二進制
      examples/runtime/shaders/glsl/vs_hdr_lum.bin
  45. 二進制
      examples/runtime/shaders/glsl/vs_hdr_lumavg.bin
  46. 二進制
      examples/runtime/shaders/glsl/vs_hdr_mesh.bin
  47. 二進制
      examples/runtime/shaders/glsl/vs_hdr_skybox.bin
  48. 二進制
      examples/runtime/shaders/glsl/vs_hdr_tonemap.bin
  49. 二進制
      examples/runtime/shaders/glsl/vs_instancing.bin
  50. 二進制
      examples/runtime/shaders/glsl/vs_mesh.bin
  51. 二進制
      examples/runtime/shaders/glsl/vs_raymarching.bin
  52. 二進制
      examples/runtime/shaders/glsl/vs_shadowvolume_color_lightning.bin
  53. 二進制
      examples/runtime/shaders/glsl/vs_shadowvolume_color_texture.bin
  54. 二進制
      examples/runtime/shaders/glsl/vs_shadowvolume_svback.bin
  55. 二進制
      examples/runtime/shaders/glsl/vs_shadowvolume_svfront.bin
  56. 二進制
      examples/runtime/shaders/glsl/vs_shadowvolume_svside.bin
  57. 二進制
      examples/runtime/shaders/glsl/vs_shadowvolume_texture.bin
  58. 二進制
      examples/runtime/shaders/glsl/vs_shadowvolume_texture_lightning.bin
  59. 二進制
      examples/runtime/shaders/glsl/vs_stencil_color.bin
  60. 二進制
      examples/runtime/shaders/glsl/vs_stencil_color_lightning.bin
  61. 二進制
      examples/runtime/shaders/glsl/vs_stencil_color_texture.bin
  62. 二進制
      examples/runtime/shaders/glsl/vs_stencil_texture.bin
  63. 二進制
      examples/runtime/shaders/glsl/vs_stencil_texture_lightning.bin
  64. 二進制
      examples/runtime/shaders/glsl/vs_tree.bin
  65. 二進制
      examples/runtime/shaders/glsl/vs_update.bin
  66. 2 1
      src/glimports.h
  67. 29 0
      src/renderer_gl.cpp
  68. 2 2
      tools/shaderc/shaderc.cpp

二進制
examples/runtime/shaders/glsl/fs_bump.bin


二進制
examples/runtime/shaders/glsl/fs_callback.bin


二進制
examples/runtime/shaders/glsl/fs_cubes.bin


二進制
examples/runtime/shaders/glsl/fs_hdr_blur.bin


二進制
examples/runtime/shaders/glsl/fs_hdr_bright.bin


二進制
examples/runtime/shaders/glsl/fs_hdr_lum.bin


二進制
examples/runtime/shaders/glsl/fs_hdr_lumavg.bin


二進制
examples/runtime/shaders/glsl/fs_hdr_mesh.bin


二進制
examples/runtime/shaders/glsl/fs_hdr_skybox.bin


二進制
examples/runtime/shaders/glsl/fs_hdr_tonemap.bin


二進制
examples/runtime/shaders/glsl/fs_instancing.bin


二進制
examples/runtime/shaders/glsl/fs_mesh.bin


+ 1 - 3
examples/runtime/shaders/glsl/fs_raymarching.bin

@@ -1,6 +1,4 @@
-FSHƒòá#version 120
-
-uniform vec3 u_lightDir;
+FSHƒòáuniform vec3 u_lightDir;
 uniform mat4 u_mtx;
 uniform mat4 u_mtx;
 varying vec2 v_texcoord0;
 varying vec2 v_texcoord0;
 varying vec4 v_color0;
 varying vec4 v_color0;

二進制
examples/runtime/shaders/glsl/fs_shadowvolume_color_lightning.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_color_texture.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svbackblank.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svbackcolor.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex1.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svbacktex2.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svfrontblank.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svfrontcolor.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex1.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svfronttex2.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svside.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svsideblank.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svsidecolor.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_svsidetex.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_texture.bin


二進制
examples/runtime/shaders/glsl/fs_shadowvolume_texture_lightning.bin


二進制
examples/runtime/shaders/glsl/fs_stencil_color_black.bin


二進制
examples/runtime/shaders/glsl/fs_stencil_color_lightning.bin


二進制
examples/runtime/shaders/glsl/fs_stencil_color_texture.bin


二進制
examples/runtime/shaders/glsl/fs_stencil_texture.bin


二進制
examples/runtime/shaders/glsl/fs_stencil_texture_lightning.bin


二進制
examples/runtime/shaders/glsl/fs_tree.bin


二進制
examples/runtime/shaders/glsl/fs_update.bin


二進制
examples/runtime/shaders/glsl/fs_update_cmp.bin


二進制
examples/runtime/shaders/glsl/vs_bump.bin


二進制
examples/runtime/shaders/glsl/vs_bump_instanced.bin


二進制
examples/runtime/shaders/glsl/vs_callback.bin


二進制
examples/runtime/shaders/glsl/vs_cubes.bin


二進制
examples/runtime/shaders/glsl/vs_hdr_blur.bin


二進制
examples/runtime/shaders/glsl/vs_hdr_bright.bin


二進制
examples/runtime/shaders/glsl/vs_hdr_lum.bin


二進制
examples/runtime/shaders/glsl/vs_hdr_lumavg.bin


二進制
examples/runtime/shaders/glsl/vs_hdr_mesh.bin


二進制
examples/runtime/shaders/glsl/vs_hdr_skybox.bin


二進制
examples/runtime/shaders/glsl/vs_hdr_tonemap.bin


二進制
examples/runtime/shaders/glsl/vs_instancing.bin


二進制
examples/runtime/shaders/glsl/vs_mesh.bin


二進制
examples/runtime/shaders/glsl/vs_raymarching.bin


二進制
examples/runtime/shaders/glsl/vs_shadowvolume_color_lightning.bin


二進制
examples/runtime/shaders/glsl/vs_shadowvolume_color_texture.bin


二進制
examples/runtime/shaders/glsl/vs_shadowvolume_svback.bin


二進制
examples/runtime/shaders/glsl/vs_shadowvolume_svfront.bin


二進制
examples/runtime/shaders/glsl/vs_shadowvolume_svside.bin


二進制
examples/runtime/shaders/glsl/vs_shadowvolume_texture.bin


二進制
examples/runtime/shaders/glsl/vs_shadowvolume_texture_lightning.bin


二進制
examples/runtime/shaders/glsl/vs_stencil_color.bin


二進制
examples/runtime/shaders/glsl/vs_stencil_color_lightning.bin


二進制
examples/runtime/shaders/glsl/vs_stencil_color_texture.bin


二進制
examples/runtime/shaders/glsl/vs_stencil_texture.bin


二進制
examples/runtime/shaders/glsl/vs_stencil_texture_lightning.bin


二進制
examples/runtime/shaders/glsl/vs_tree.bin


二進制
examples/runtime/shaders/glsl/vs_update.bin


+ 2 - 1
src/glimports.h

@@ -15,7 +15,7 @@
 // OpenGL 2.1 Reference Pages
 // OpenGL 2.1 Reference Pages
 // http://www.opengl.org/sdk/docs/man/
 // http://www.opengl.org/sdk/docs/man/
 
 
-#if BX_PLATFORM_WINDOWS
+#if BX_PLATFORM_WINDOWS || BGFX_CONFIG_RENDERER_OPENGL >= 31
 GL_IMPORT____(false, PFNGLGETERRORPROC,                          glGetError);
 GL_IMPORT____(false, PFNGLGETERRORPROC,                          glGetError);
 GL_IMPORT____(false, PFNGLREADPIXELSPROC,                        glReadPixels);
 GL_IMPORT____(false, PFNGLREADPIXELSPROC,                        glReadPixels);
 GL_IMPORT____(false, PFNGLTEXIMAGE2DPROC,                        glTexImage2D);
 GL_IMPORT____(false, PFNGLTEXIMAGE2DPROC,                        glTexImage2D);
@@ -100,6 +100,7 @@ GL_IMPORT____(false, PFNGLGENRENDERBUFFERSPROC,                  glGenRenderbuff
 GL_IMPORT____(false, PFNGLDELETERENDERBUFFERSPROC,               glDeleteRenderbuffers);
 GL_IMPORT____(false, PFNGLDELETERENDERBUFFERSPROC,               glDeleteRenderbuffers);
 GL_IMPORT____(false, PFNGLRENDERBUFFERSTORAGEPROC,               glRenderbufferStorage);
 GL_IMPORT____(false, PFNGLRENDERBUFFERSTORAGEPROC,               glRenderbufferStorage);
 GL_IMPORT____(false, PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC,    glRenderbufferStorageMultisample);
 GL_IMPORT____(false, PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC,    glRenderbufferStorageMultisample);
+GL_IMPORT____(false, PFNGLBINDFRAGDATALOCATIONPROC,              glBindFragDataLocation);
 #else
 #else
 GL_IMPORT_EXT(false, PFNGLBINDFRAMEBUFFEREXTPROC,                glBindFramebuffer);
 GL_IMPORT_EXT(false, PFNGLBINDFRAMEBUFFEREXTPROC,                glBindFramebuffer);
 GL_IMPORT_EXT(false, PFNGLGENFRAMEBUFFERSEXTPROC,                glGenFramebuffers);
 GL_IMPORT_EXT(false, PFNGLGENFRAMEBUFFERSEXTPROC,                glGenFramebuffers);

+ 29 - 0
src/renderer_gl.cpp

@@ -1109,6 +1109,10 @@ namespace bgfx
 		GLint activeAttribs;
 		GLint activeAttribs;
 		GLint activeUniforms;
 		GLint activeUniforms;
 
 
+#if BGFX_CONFIG_RENDERER_OPENGL >= 31
+		GL_CHECK(glBindFragDataLocation(m_id, 0, "bgfx_FragColor") );
+#endif // BGFX_CONFIG_RENDERER_OPENGL >= 31
+
 		GL_CHECK(glGetProgramiv(m_id, GL_ACTIVE_ATTRIBUTES, &activeAttribs) );
 		GL_CHECK(glGetProgramiv(m_id, GL_ACTIVE_ATTRIBUTES, &activeAttribs) );
 		GL_CHECK(glGetProgramiv(m_id, GL_ACTIVE_UNIFORMS, &activeUniforms) );
 		GL_CHECK(glGetProgramiv(m_id, GL_ACTIVE_UNIFORMS, &activeUniforms) );
 
 
@@ -1910,6 +1914,31 @@ namespace bgfx
 					}
 					}
 				}
 				}
 			}
 			}
+#elif BGFX_CONFIG_RENDERER_OPENGL >= 31
+			size_t codeLen = strlen(code);
+			size_t tempLen = codeLen + 1024;
+			char* temp = (char*)alloca(tempLen);
+			bx::StaticMemoryBlockWriter writer(temp, tempLen);
+
+			writeString(&writer, "#version 140\n");
+			if (_type == GL_FRAGMENT_SHADER)
+			{
+				writeString(&writer, "#define varying in\n");
+				writeString(&writer, "#define texture2D texture\n");
+				writeString(&writer, "#define texture3D texture\n");
+				writeString(&writer, "#define textureCube texture\n");
+				writeString(&writer, "out vec4 bgfx_FragColor;\n");
+				writeString(&writer, "#define gl_FragColor bgfx_FragColor\n");
+			}
+			else
+			{
+				writeString(&writer, "#define attribute in\n");
+				writeString(&writer, "#define varying out\n");
+			}
+
+			bx::write(&writer, code, codeLen);
+			bx::write(&writer, '\0');
+			code = temp;
 #endif // BGFX_CONFIG_RENDERER_OPENGLES2
 #endif // BGFX_CONFIG_RENDERER_OPENGLES2
 
 
 			GL_CHECK(glShaderSource(m_id, 1, (const GLchar**)&code, NULL) );
 			GL_CHECK(glShaderSource(m_id, 1, (const GLchar**)&code, NULL) );

+ 2 - 2
tools/shaderc/shaderc.cpp

@@ -530,7 +530,7 @@ bool compileGLSLShader(bx::CommandLine& _cmdLine, const std::string& _code, bx::
 	}
 	}
 	else
 	else
 	{
 	{
-		writef(_writer, "#version %s\n\n", profile);
+//		writef(_writer, "#version %s\n\n", profile);
 	}
 	}
 
 
 	bx::write(_writer, optimizedShader, (int32_t)strlen(optimizedShader) );
 	bx::write(_writer, optimizedShader, (int32_t)strlen(optimizedShader) );
@@ -1833,7 +1833,7 @@ int main(int _argc, const char* _argv[])
 						}
 						}
 						else
 						else
 						{
 						{
-							writef(&writer, "#version %s\n\n", profile);
+//							writef(&writer, "#version %s\n\n", profile);
 						}
 						}
 					}
 					}
 					writer.write(preprocessor.m_preprocessed.c_str(), (int32_t)preprocessor.m_preprocessed.size() );
 					writer.write(preprocessor.m_preprocessed.c_str(), (int32_t)preprocessor.m_preprocessed.size() );