Как расширить область воздействия на шейдер GLSL? - PullRequest
0 голосов
/ 06 августа 2020

Я новичок в GLSL, и я пишу свой самый первый шейдер. Шейдер написан для использования с PIXI js. Я в значительной степени получил желаемый эффект, но похоже, что созданный эффект iv замаскирован и ограничен размером моего спрайта. см. картинку ниже. Кто-нибудь может сказать мне, что я делаю не так? ценю

enter image description here

see the full code here: https://codepen.io/michell-morso/pen/dyMyxLd

мой шейдер:

precision mediump float;
varying vec2 vTextureCoord;
uniform sampler2D uSampler;
uniform vec2 u_resolution;
uniform float progress; 
  
void main(){
   vec2 uv = gl_FragCoord.xy/u_resolution.xy;
  float rnd = fract(sin(dot(uv.xy,vec2(12.9898,78.233)))*43758.5453123);
  vec2 cordi = vec2(vTextureCoord.x, vTextureCoord.y-rnd*progress);
  cordi = progress > 0. ? vec2(cordi.x+0.02*sin(cordi.y*52.0+progress*20.0),cordi.y):cordi;
  gl_FragColor = texture2D(uSampler, cordi);
}

1 Ответ

1 голос
/ 15 августа 2020

Я не уверен, как вы хотите, чтобы это выглядело. Я предполагаю, что вы хотите, чтобы эффект был больше, а не обрезан полом или чем-то еще. Ваш шейдер выглядит неплохо, но он может влиять только на пиксели внутри спрайта, как вы говорите. Чтобы выполнить рендеринг за пределами этой области, вам нужно будет добавить больше геометрии, увеличить размер спрайта или даже отрендерить полноэкранный четырехугольник, чтобы у вас была свобода управления на всем экране. Люблю южный парк! говоря об этом, проверьте это: https://www.shadertoy.com/view/WlBcD3

...