Me gustaría ampliar mi juego con uno de los filtros hqx (hq2x, hq3x o hq4x) o un filtro xBR en un sombreador.
¿Cómo puedo hacer esto en XNA 4.0 y SM3?
Nota al margen: esta pregunta ha sido editada en gran medida para convertirse en lo que es ahora.
hqxSharp
proyecto, pero santa mierda es lenta (lo que advierte). Necesito algo que pueda mantener un framerate decente.Respuestas:
Puede reducir el recuento de instrucciones utilizando operaciones vectoriales: por ejemplo, en lugar de
puedes escribir
Los operadores en HLSL se pueden aplicar a vectores, incluso los lógicos, como
&&
dosbool3
valores. Estos operadores realizarán la operación por componentes.Código de sombreador
Imágenes
La imagen original de Redshrike se ha ampliado en un factor de 4.
fuente
ir_lv1 = ((e != f) && (e != h));
ir_lv2_left = ((e != g) && (d != g));
ir_lv2_up = ((e != c) && (b != c));
Esas son buenas optimizaciones que extrañé que encontraste, no terminé necesitándolas para mi problema porque pude reducir el recuento de instrucciones con otras optimizaciones.Tengo esto funcionando. No usa el filtro hqx, usa el filtro xBR (que prefiero). Para mí, esto no es un problema. Si necesita el filtro hqx, entonces querrá convertir los archivos .cg en su equivalente XNA apropiado.
Por razones completas y de búsqueda, editaré la pregunta para que sea más concisa y luego publicaré toda la información relevante para responder la pregunta aquí.
Paso 1: Configuración del código del juego
En primer lugar, lo más probable es que desee configurar un objetivo de renderizado donde dibuje su juego a escala 1: 1 y luego renderice el filtro.
Paso 2: archivo de efectos
El siguiente es el archivo de efectos compatible con XNA para realizar el filtro xBR.
Resultados
La textura que utilicé para el render 240x160:
El resultado de ejecutar el juego:
Fuentes
El archivo .cg que convertí en compatible con XNA vino de aquí . Entonces los créditos van a ellos por escribirlo.
fuente