Skip to content

Commit d9e6cb8

Browse files
committed
Sync v3 pr20107 & fix builtin shaders, see: cocos2d/cocos2d-x#20107
1 parent f0d60d4 commit d9e6cb8

File tree

4 files changed

+20
-19
lines changed

4 files changed

+20
-19
lines changed

cocos/renderer/backend/opengl/ProgramGL.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/****************************************************************************
22
Copyright (c) 2018-2019 Xiamen Yaji Software Co., Ltd.
3+
Copyright (c) 2020 c4games.com.
34
45
http://www.cocos2d-x.org
56
@@ -32,18 +33,18 @@
3233
#include "renderer/backend/opengl/UtilsGL.h"
3334

3435
CC_BACKEND_BEGIN
36+
3537
namespace {
36-
std::string vsPreDefine("#version 100\n precision highp float;\n precision highp int;\n");
37-
std::string fsPreDefine("precision mediump float;\n precision mediump int;\n");
38+
static const std::string SHADER_PREDEFINE = "#version 100\n precision highp float;\n precision highp int;\n";
3839
}
3940

4041
ProgramGL::ProgramGL(const std::string& vertexShader, const std::string& fragmentShader)
4142
: Program(vertexShader, fragmentShader)
4243
{
4344
#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
44-
//some device required manually specify the precision qualifiers for vertex shader.
45-
_vertexShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newVertexShaderModule(std::move(vsPreDefine + _vertexShader)));
46-
_fragmentShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newFragmentShaderModule(std::move(fsPreDefine + _fragmentShader)));
45+
// some device required manually specify the precision qualifiers for vertex shader.
46+
_vertexShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newVertexShaderModule(std::move(SHADER_PREDEFINE + _vertexShader)));
47+
_fragmentShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newFragmentShaderModule(std::move(SHADER_PREDEFINE + _fragmentShader)));
4748
#else
4849
_vertexShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newVertexShaderModule(_vertexShader));
4950
_fragmentShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newFragmentShaderModule(_fragmentShader));
@@ -88,8 +89,8 @@ void ProgramGL::reloadProgram()
8889
_activeUniformInfos.clear();
8990
_mapToCurrentActiveLocation.clear();
9091
_mapToOriginalLocation.clear();
91-
static_cast<ShaderModuleGL*>(_vertexShaderModule)->compileShader(backend::ShaderStage::VERTEX, std::move(vsPreDefine + _vertexShader));
92-
static_cast<ShaderModuleGL*>(_fragmentShaderModule)->compileShader(backend::ShaderStage::FRAGMENT, std::move(fsPreDefine + _fragmentShader));
92+
static_cast<ShaderModuleGL*>(_vertexShaderModule)->compileShader(backend::ShaderStage::VERTEX, std::move(SHADER_PREDEFINE + _vertexShader));
93+
static_cast<ShaderModuleGL*>(_fragmentShaderModule)->compileShader(backend::ShaderStage::FRAGMENT, std::move(SHADER_PREDEFINE + _fragmentShader));
9394
compileProgram();
9495
computeUniformInfos();
9596

cocos/renderer/shaders/positionTexture.frag

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
const char* positionTexture_frag = R"(
2727

2828
#ifdef GL_ES
29-
precision lowp float;
30-
#endif
31-
29+
varying mediump vec2 v_texCoord;
30+
#else
3231
varying vec2 v_texCoord;
32+
#endif
3333

3434
uniform sampler2D u_texture;
3535

cocos/renderer/shaders/positionTextureColor.frag

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@
2525

2626
const char* positionTextureColor_frag = R"(
2727
#ifdef GL_ES
28-
precision lowp float;
29-
#endif
30-
28+
varying lowp vec4 v_fragmentColor;
29+
varying mediump vec2 v_texCoord;
30+
#else
3131
varying vec4 v_fragmentColor;
3232
varying vec2 v_texCoord;
33+
#endif
3334

3435
uniform sampler2D u_texture;
3536

cocos/renderer/shaders/positionTextureUColor.frag

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,17 @@
2424
*/
2525

2626
const char* positionTextureUColor_frag = R"(
27-
2827
#ifdef GL_ES
29-
precision lowp float;
28+
varying mediump vec2 v_texCoord;
29+
#else
30+
varying vec2 v_texCoord;
3031
#endif
3132

3233
uniform vec4 u_color;
33-
uinform sampler2D u_texture;
34-
35-
varying vec2 v_texCoord;
34+
uniform sampler2D u_texture;
3635

3736
void main()
3837
{
39-
gl_FragColor = texture2D(u_texture, v_texCoord) * u_color;
38+
gl_FragColor = u_color * texture2D(u_texture, v_texCoord);
4039
}
4140
)";

0 commit comments

Comments
 (0)