Как сделать свойство массива цветов для шейдера? - PullRequest
0 голосов
/ 01 августа 2020

У меня есть простой шейдер (.effect файл в Cocos Creator) со свойством цвета, который можно изменить в окне свойств материала. Проверьте образец кода и изображение для справки.

Как я могу сделать массив цветов? Я хочу иметь возможность указывать любое количество цветов в массиве в окне свойств материала.

CCEffect %{
  techniques:
  - passes:
    - vert: vs
      frag: fs
      blendState:
        targets:
        - blend: true
      rasterizerState:
        cullMode: none
      properties:
        texture: { value: white }
        alphaThreshold: { value: 0.5 }
        color: { value: [1, 1, 1, 1], editor: { type: color }}
}%


CCProgram vs %{
  // ...
}%


CCProgram fs %{
  precision highp float;
  
  #include <alpha-test>
  #include <texture>

  in vec4 v_color;

  #if USE_TEXTURE
  in vec2 v_uv0;
  uniform sampler2D texture;
  #endif

  uniform Data
  {
    vec4 color;
  };

  void main()
  {
    vec4 o = vec4(1, 1, 1, 1);

    #if USE_TEXTURE
      CCTexture(texture, v_uv0, o);
    #endif

    o *= v_color;

    ALPHA_TEST(o);

    gl_FragColor = o;
  }
}%

введите описание изображения здесь

1 Ответ

0 голосов
/ 13 августа 2020

В настоящее время нет функции, которая поддерживала бы это.

Источник: https://discuss.cocos2d-x.org/t/how-to-make-a-color-array-property-for-a-shader/51068/

...