Google Chrome WebGL Shader Compile Linker Ошибка, униформа с тем же именем, но разным типом/точностью

Униформа с таким же названием, но разного типа/точности

Это то, что я получаю при компиляции шейдеров только с последним Chrome в Windows. ничего больше

Глядя на

http://www.cocos2d-x.org/forums/19/topics/39063?r=39258 и https://code.google.com/p/chromium/issues/detail?id=309527

Я попытался добавить оба highp для обоих из следующих, и это тоже не помогает.

шейдер :

  "attribute vec3 a_position;                  \n"
  "attribute vec3 a_normal;                    \n"
  "attribute vec2 a_texture;                   \n"

  "uniform mat4 u_mvpMatrix;                   \n"
  "uniform mat3 u_normalMatrix;                \n"
  "uniform vec4 u_lightDir;                    \n"
  "uniform lowp int u_eT;           \n"
  "uniform lowp int u_eL;             \n"
  "uniform vec4 u_colormul;                    \n"

  "varying float v_cf;                \n"
  "varying vec2 v_t;                          \n"

F-шейдер

  "precision mediump float;                                     \n"
  "uniform vec4 u_color;                                        \n"
  "uniform lowp int u_eT;                            \n"
  "uniform sampler2D u_texture0;                                \n"
  "uniform vec4 u_colormul;                                     \n"

  "varying float v_cf;                                 \n"
  "varying vec2 v_t;                                           \n"

Ранний ответ приветствуется

Спасибо


person ideerge    schedule 20.11.2013    source источник


Ответы (1)


Я решил эту проблему, добавив precision mediump float; в свои вершинные шейдеры, чтобы они соответствовали точности, определенной для их аналогов-фрагментов.

person Chase    schedule 20.11.2013
comment
@ideerge в одном из моих случаев мне также нужно было определить точность для int. довольно неприятно - вернулся к моему старому коду, и внезапно половина шейдеров не линкуется. - person jozxyqk; 05.12.2013