Развитие игровой вспышки
Текущее время: Чт дек 13, 2018 6:29 pm

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Phaser. Text Glow
СообщениеДобавлено: Вс апр 15, 2018 7:39 pm 
Не в сети

Зарегистрирован: Сб июн 11, 2011 8:12 pm
Сообщений: 371
Во Флеш можно было настроить свечение тексту, как этот эффект сделать в Phaser для текста?


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser. Text Glow
СообщениеДобавлено: Пн апр 16, 2018 2:14 am 
Не в сети
Аватар пользователя

Зарегистрирован: Пн янв 09, 2017 8:44 pm
Сообщений: 175
eXAAAXe писал(а):
Во Флеш можно было настроить свечение тексту, как этот эффект сделать в Phaser для текста?


Нужен шейдер (фильтр)
Можно приготовить так:
(Шейдер взят тут https://gist.github.com/MatthewBarker/0 ... 577c6d0188)
Код:
  var style = { font: "100px Arial", fill: "#ff0044", align: "center" };
      var text = this.game.add.text(this.game.world.centerX, this.game.world.centerY, "Это работает!", style);
      text.anchor.set(0.5);
     
      var fragmentSrc = [
          'precision lowp float;',
          'varying vec2 vTextureCoord;',
          'varying vec4 vColor;',
          'uniform sampler2D uSampler;',

          'void main() {',
              'vec4 sum = vec4(0);',
              'vec2 texcoord = vTextureCoord;',
              'for(int xx = -4; xx <= 4; xx++) {',
                  'for(int yy = -3; yy <= 3; yy++) {',
                      'float dist = sqrt(float(xx*xx) + float(yy*yy));',
                      'float factor = 0.0;',
                      'if (dist == 0.0) {',
                          'factor = 2.0;',
                      '} else {',
                          'factor = 2.0/abs(float(dist));',
                      '}',
                      'sum += texture2D(uSampler, texcoord + vec2(xx, yy) * 0.002) * factor;',
                  '}',
              '}',
              'gl_FragColor = sum * 0.025 + texture2D(uSampler, texcoord);',
          '}'
      ];

      var filter = new Phaser.Filter(this.game, null, fragmentSrc);

      text.filters = [ filter ];


Можно код оформить более грамотно, но смотри сам, даю ссылку.
Больше примеров и вариантов подключения шейдеров тут: https://phaser.io/examples/v2/category/filters


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB