Hola a todos, me encuentro con un dilema que no se como resolver,
Necesito cambiar la modulación de color a un grafico de un scroll en pixtudio (para hacer que las paredes luzcan de distinto color en diferentes mundos) pero resulta que según leí en foros no esta disponible la función rbgscale en pixtudio y lo que si está disponible son las variables locales de proceso: modr, modg, modb, las cuales funcionan muy bien y de maravilla pero creo que no se sirven ya que lo que se necesita es cambiar la modulación de un grafico suelto, por ahí existe un video donde Joseba hace lo que quiero pero no se si lo hizo para bennugd o pixtudio https://vimeo.com/155582188
Como podría hacer eso en pixtudio? o es que hay algun hack que desconozco..?
de antemano gracias.
eso tiene toa la pinta de ser el fondo de un color que se vá cambiando y los edificios por delante
para hacer eso basta con... espera, que es pixtudio y las variables no son iguales, creo, te lo pongo en pseudo codigo:
-pintas un recuadro del tamaño de la pantalla o le das a clear screen si el proceso del scroll te lo permite, da igual, y luego según vayan pasando unos frames o en un bloque for, le metes un incremento de colores RBG al recuadro o la pantalla según te convenga. Al atardecer pasa de un celeste a un azul oscuro y/o negro (ergo disminuir R y G rapidamente y B mas lento) y al amanecer puede pasar por un rojizo o incluso amarillo o blanco, bastaría con aumentar R y G al doble o triple del B y cuando lleguen al tope bajarlos hasta que llegue el B al tope
con un bloque for te sale facil
Mmm entiendo, quiere decir que al ser pixtudio la conversión de colores pasa a ser a través de un proceso obligatoriamente (o grafico suelto en memoria)?
nope, en bennu es map_clear(fpg,grafico,rgb(125,215,21)) que en pixtudio igual sería clear_map(...) o cualquier otra sentencia
Buenas logotytye
En principio actualmente no hay ninguna función para hacer modulación de color sin modificar la textura, me explico: modr, modg y modb le dicen a la textura el porcentaje que tienen que mostrar de los colores rojo, verde y azul, pero no sirve para modificar el color en sí.
De todas formas, rgbscale sí que existe, pero cada vez que se modifica una textura el engine tiene que actualizarla en la VRAM de la GPU y no es demasiado rápido en hacerlo, por lo que si necesitas hacerlo a menudo en cada frame puede suponer un problema.
Yo utilizo esta función para actualizar FPGs enteros:
Function colorea_fpg(file, float r, float g, float b);
Private
new_file;
i;
Begin
new_file=fpg_new();
from i=1 to 999;
if(map_exists(file,i))
fpg_add(new_file,i,file,i);
rgbscale(new_file,i,r,g,b);
end
end
return new_file;
End
Gracias colegas, Panreyes estoy seguro que tu función sirve, solo que el pixtudio no existe rgbscale, por lo tanto estoy tratando de recrear la función rgbscale para cambiar un mapa, tengo mapas de 32x32 en 16bits y aplico la formula que esta en la documentación oficial de rgbscale http://wiki.bennugd.org/index.php?title=Rgbscale pero los gráficos que me genera tienen colores raros, no representa lo que yo creo que debería ser, si pueden probar la función que hice para ver si necesita alguna corrección con respecto a la formula. los bytes los cambie por int y viceversa, parecen dar mismo resultado graficas raras, podria alguien comparar esta función con el verdadero rgbscale de bennu para ver si esta acorde?
El idgrafico es el que se va a cambiar de colores debe ser de 32x32, para esta prueba use png sueltos normalitos.
ejecute la funcion así: rgbscalex(ladrillo, 50, 101, 22);
adjunto archivo de los colores raros en que me convierte la imagen.
function rgbscalex(int idgrafico, int r, int g, int b)
private
int i=1, j=1;
byte my_r, my_g, my_b;
int estado;
byte c;
byte newpixel_r, newpixel_g, newpixel_b;
begin
for(i=1; i<=32; i++)
for(j=1; j<=32; j++)
estado = rgb_get(map_get_pixel(0, idgrafico, i, j), &my_r, &my_g, &my_b, 16);
c = 0.3 * my_r + 0.59 * my_g + 0.11 * my_b;
newpixel_r = r * c;
newpixel_g = g * c;
newpixel_b = b * c;
map_put_pixel (0, idgrafico, i, j, rgb(newpixel_r, newpixel_g, newpixel_b));
end
end
end
Hola de nuevo logotytye :)
Me has hecho dudar, te lo prometo xD
RGBScale existe y funciona en PixTudio. Forma parte del módulo mod_effects.
Uy no sabia eso pensé que pertenecía a mod_map, depronto le estoy buscando la quinta pata al gato, en unas horas entro e importo ese módulo aver que. pero bueno, si no escribo el post nunca lo sabría, gracias!!!!!
Quote from: panreyes on April 11, 2019, 09:38:02 AM
Hola de nuevo logotytye :)
Me has hecho dudar, te lo prometo xD
RGBScale existe y funciona en PixTudio. Forma parte del módulo mod_effects.
Así es, estaba en mod_effects, muchas gracias panreyes. karma++