Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

370
Views
¿Cómo hacer que un sombreador de fragmentos basado en la posición funcione en PIXI.js?

Estoy recreando el juego clásico SPACE INVADERS, y actualmente estoy trabajando en escribir un shader que imitará el aspecto de la superposición de pantalla en las consolas retro. (Pondrían una pegatina enorme sobre todo el monitor para simular el color. Similar a lo que se puede ver en este video )

Estoy trabajando para obtener una versión muy cruda del sombreador que funcione en este momento, y esto es lo que tengo hasta ahora cuando noté un problema muy importante:

 varying vec2 vTextureCoord; uniform sampler2D uSampler; void main(){ if(texture2D(uSampler, vTextureCoord).r > 0.0) if(vTextureCoord.y < 0.1) gl_FragColor = vec4(1.0,0,0,1.0); else gl_FragColor = vec4(1.0,1.0,1.0,1.0); else gl_FragColor = texture2D(uSampler, vTextureCoord); }

Tenga en cuenta que estoy determinando el color de los píxeles según su posición relativa a su contenedor principal, diciendo que todos los píxeles en el 10 % superior del contenedor deben ser rojos y el resto debe mantener su color original. Sin embargo, a medida que los alienígenas se mueven hacia abajo en la pantalla, el contenedor se reposiciona y cambia de tamaño constantemente para contener perfectamente a cada alienígena, y esto hace que la fila superior de alienígenas siempre sea roja porque el 10% superior del contenedor se mueve hacia abajo con ellos. Esto se puede ver especialmente claro si le digo al sombreador que siempre emita un solo color (por ejemplo, blanco). El contenedor se convierte en un enorme bloque blanco que se mueve de un lado a otro y hacia abajo a través de la pantalla.

Y, un problema relacionado es que, dado que estoy usando la escala del vecino más cercano, el cambio de tamaño constante del contenedor principal también hace que los píxeles se desplacen constantemente, lo que se ve horrible. Si no aplico ningún sombreador, este problema no se ve, pero si aplico cualquier sombreador, incluso uno que siempre devuelve el color de entrada, de repente los píxeles comienzan a cambiar constantemente.

¿Cómo debo hacer para arreglar esto? Mi idea inicial fue bloquear el contenedor principal en su lugar y permitir que los niños se muevan dentro de él sin que se mueva con ellos, pero después de leer este hilo , parece que los mantenedores de PIXI son muy conscientes de que bloquear la posición y los límites de un contenedor es un gran no-no y nunca será posible sin anulaciones manuales (lo que estaría dispuesto a hacer, pero me preocupa que rompa un montón de otras cosas)

¿Hay otra forma de solucionar este problema? ¿Cómo puedo aplicar este sombreador (a cada elemento del juego) mientras garantizo que su punto de origen nunca se moverá? ¿O debería abordar esto desde una dirección totalmente diferente?

about 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!