Foros - Stratos

Proyectos => Jad Engine => Mensaje iniciado por: Gezequiel en 23 de Mayo de 2005, 11:42:40 PM

Título: Actualidad Del Motor
Publicado por: Gezequiel en 23 de Mayo de 2005, 11:42:40 PM
 En que anda ese genial motor que estan desarrollando?? terminado?? un 75%??? un 50%???

Que trae de importante??? Que tienen pensado???
Es para mantenerme un poco al tanto de en que anda el motor que ah largo plazo tengo pensado uzar...

Otra cosa, si voy a programar algo en C# puedo usar un motor en C++??? o obligadamente tengo que usar uno del mismo lenguaje???
Título: Actualidad Del Motor
Publicado por: Haddd en 24 de Mayo de 2005, 09:18:31 AM
 
Citar
Características generales

1.   Desarrollado íntegramente en C# 2.0 y MDX
2.   Totalmente integrado en la plataforma .Net
3.   Enfocado a tarjetas con unos requerimientos mínimos de shaders 2.0

Scripting

1.   Utiliza el propio C#, con lo que la calidad y potencia del scripting está garantizada.

Editores

1.   Basado principalmente en la potenciación del 3Dmax como herramienta principal de edición.
2.   Editor de Noise
3.   Editor de Materiales ( en desarrollo )
4.   Editor de Partículas

Física

1.   Utiliza el motor de física Newton para generar movimientos y respuestas realistas: rigid body, múltiples tipo de joint, colisiones, rag dolls...

Iluminación

1.   Iluminación per-pixel soportando Diffuse, Specular, Bump maps, parallax mapping, environment mapping
2.   Soporte para lightmaps generados directamente desde MAX

Sombras

1.   ShadowMapping
2.   Stencil Shadows
3.   Sombras suaves para los dos tipos de sombreado

Gestión de la escena

1.   Scene Graph incorporado
2.   Portal Rendering
3.   Mirrors
4.   Render targets

Animación

1.   Animación esquelética por canales
2.   Importación directa del formato MD5 de ID.
3.   Animación por blending de keyframes

Efectos especiales

1.   SkyBox
2.   BillBoarding
3.   Sistema de partículas
4.   Light Shafts
5.   Depth of Field
6.   Glow
7.   Sistema de postproducción integrado

Sonido

1.   Sonido 2D, 3D y streaming
2.   Soporte de Ogg Vorbis

IA

1.   Búsqueda de caminos
2.   Steering Behaviours


Actualmente estamos centrados en la parte de los materiales. Como andando se aprende mucho, parece que hemos encontrado una buena solución para ese problema. Por ejemplo, os pongo el shader Phong:



#region VS

#end VS

#region PS
{
float3 diffuseColor = 0.0f;

if(Uniform.affectDiffuse)
{
 diffuseColor = base * diffuse(N, L) * MATERIAL_Diffuse;
}

// Si tenemos que calcular el specular o el environment map, calculamos el vector "Reflection"

if(Uniform.affectSpecular || Uniform.envMapEnabled)
 R = reflect(L, N);
 
if(Uniform.affectSpecular)
{
 float specularTerm = specular(R, -V, MATERIAL_SpecularPower) * MATERIAL_Specular;

 fragmentColor = LIGHT_Color * (diffuseColor + specularTerm);
}
else
{
 fragmentColor = LIGHT_Color * (diffuseColor);
}
}
#end PS


Y el Minnaert:

#region VS
{
}
#end VS

#region PS
{
float3 diffuseColor = 0.0f;

float NdotL = dot(N, L);
float NdotV = dot(N, V);

float irradiance = max(0.0f, NdotL);

// TODO: Esto debería ser una constante
float Power = 1.0f;

fragmentColor = LIGHT_Color * base * MATERIAL_Diffuse * pow(NdotV * NdotL, Power) * irradiance;

// Si tenemos que calcular el environment map, calculamos el vector "Reflection"

if(Uniform.envMapEnabled)
 R = reflect(L, N);
}
#end PS


Simplemente indicas el tipo de iluminación necesaria y automáticamente soporta:

1. Sombras
2. Emissive
3. EnvMap
4. Normal
5. Proyectores
6. DOF

Todo lo que es global, como proyectores, sombras, emissive...no lo especificas tu sino que el propio motor lo adecua al shader. Así que escribir shaders de iluminación para el motor es ahora bastante bastante sencillo y potente.

Por ejemplo, con cualquier shader puedes activar un proyector así:


flashLight.ProjectorMap = Haddd.Video.Textures.Create2D("vidriera_diffuse",true);
flashLight.ProjectorEnabled = false;


Y no tienes que tener NADA en cuenta a la hora de escribir tu shader de iluminación ( si es que necesitas crear alguno, porque nosotros ya suministramos bastantes )

Y bueno, respecto a lo del juego que estábamos haciendo para Art Futura, deciros que el grupo de grafistas no puede continuar  :(  Así que nos hemos cansado un poco de tanto pedir y pedir y pedir y pedir, y nos hemos centrado en las características del motor, sin tener ningún juego en mente.

Seguimos trabajando cada día en el tema, y la arquitectura del motor está muy bien. El exportador de MAX es fantástico y casi casi conseguimos que nos quede igual que como sale en MAX. El otro día quedaba exáctamente igual, pero con iluminación per Vertex, parece que las normales las trata de otra forma. Eso sí, estamos llegando al límite de los 2.0 y ya estamos pensando en el 3.0

Ahora mismo queremos terminar el tema de materiales, soportando HDR, el editor de Materiales...
Título: Actualidad Del Motor
Publicado por: Lord Trancos 2 en 24 de Mayo de 2005, 09:44:43 AM
 Ufff... HDR molaaaa....

Oye Haddd, no entiendo como haceis eso de que el usuario pueda escribir su shader y por otro lado el motor pueda proyectar una textura. Si no me equivoco un shader reempleza la fixed pipeline, asin q lo q escriba el usuario en su shader deberia ser lo que se representara, no?

Por otra parte, tambien me gustaria saber como lo haceis para que un mismo shader sirva para N luces.

Edit: veo que no teneis nada en el vertex shader... ¿tiene algo que ver con lo que pregunto?
Título: Actualidad Del Motor
Publicado por: Haddd en 24 de Mayo de 2005, 09:53:14 AM
 El proyector es independiente del tipo de iluminación:está o no está activado, y si lo está siempre actual igual. Por tanto está fuera del trozo que el programador escribe.

Es como la proyección del pto. Eso no lo escribe el programador cada vez. Como siempre es la misma operación, el motor ya lo incluye por él.

Lo que hemos conseguido a base de tanto probar, es entender y crear una estructura lógica de cómo funciona realmente la iluminación, qué es dependiente y que no lo es. Pero siempre encuentras cosas nuevas. Por ejemplo, ayer nos dimos cuenta de que el envmap dependía también del NdotL para que quedara realmente bien. Y es algo que no había visto en ningún shader. Pero como tenemos el render del Max para comprobar si nos sale igual, estamos ajustando todos los flecos que encontramos. La verdad es que es muy muy intersante  :D

Respecto a lo de las luces, hacemos tantas pasadas como luces hay. Así que siempre tratamos una sola luz.

Y sobre el vertex shader tenemos shaders de geometría definidos por el usuario. Pero todavía no hemos creado ninguno, aunque el EffectBuilder ya lo tiene previsto.
Título: Actualidad Del Motor
Publicado por: seryu en 24 de Mayo de 2005, 10:16:53 AM
 debo estar muy mal.. porque cuando he visto el titulo de este post, me he preguntado, que coño hace aqui un post sobre coches?  :D  
Título: Actualidad Del Motor
Publicado por: Lord Trancos 2 en 24 de Mayo de 2005, 10:29:23 AM
 
Citar
El proyector es independiente del tipo de iluminación:está o no está activado, y si lo está siempre actual igual. Por tanto está fuera del trozo que el programador escribe.

Osea, q el programador solo escribe un cacho del shader, no?

Citar
Respecto a lo de las luces, hacemos tantas pasadas como luces hay. Así que siempre tratamos una sola luz.

Ufff... ¿significa eso que transformais y dibujais el objeto tantas veces como luces hay?
imagino que eso simplifica mucho el trabajo con shaders complejos,... pero ¿no es muy intensivo? ¿haceis algo para optimizarlo?
Título: Actualidad Del Motor
Publicado por: Haddd en 24 de Mayo de 2005, 10:55:58 AM
 
Citar
Osea, q el programador solo escribe un cacho del shader, no?

Exacto, sólo escribe el trozo correspondiente al tipo de iluminación. Sólo se tiene que preocupar del diffuse y specular.

Citar
Ufff... ¿significa eso que transformais y dibujais el objeto tantas veces como luces hay?
imagino que eso simplifica mucho el trabajo con shaders complejos,... pero ¿no es muy intensivo? ¿haceis algo para optimizarlo?

No hemos podido probar la diferencia real en un juego de saber cómo funcionaría gestionando desde el shader las luces. Me imagino que habría unos cuantos if y no sé si realmente sería más rápido que procesar los shaders sin ifs

De todas formas, sólo es factible en el modelo de shaders 3.0 y por ahora...no tenemos dinero para ello  (nooo)  
Título: Actualidad Del Motor
Publicado por: Lord Trancos 2 en 24 de Mayo de 2005, 11:07:45 AM
Cita de: "Haddd"De todas formas, sólo es factible en el modelo de shaders 3.0 y por ahora...no tenemos dinero para ello  (nooo)
¿Y eso pq? ¿En 2.0 tb se pueden usar ifs, no?  :huh:  
Título: Actualidad Del Motor
Publicado por: Haddd en 24 de Mayo de 2005, 11:17:04 AM
 Simula los ifs. Lo que hace es que en realidad procesar todo el código que hay, independientemente de si hay o no el if, y al final hace un lerp entre el valor final y el resultado sin el if.
Título: Actualidad Del Motor
Publicado por: seryu en 24 de Mayo de 2005, 11:26:00 AM
 lo cual es horrible, por cierto.

Una duda al respecto, os vais a meter con los 3.0 o estais esperando a los 4?
Título: Actualidad Del Motor
Publicado por: Haddd en 24 de Mayo de 2005, 11:42:57 AM
 La verdad es que con la aparición de las nuevas consolas, el pc como sistema de juego estará un poco desfasado. Parece que la XBox360 costará unos 300€....¿qué tarjeta de vídeo de nueva generación costará ese precio ? Me temo que te saldrá más barato comprarte una XBox que una de estas tarjetas..Así que...¿quién comprará realmente tarjetas a 500€?

¿ Y tendrán en cuenta las compañías a los jugadores de PC ? Porque este momento no lo hemos vivido nunca. Siempre el PC iba por delante de las consolas, pero ahora que la consola supera al PC....¿Qué ocurrirá?

Nosotros mantenemos el SM2.0 hasta que las 3.0 estén baratas. Pero realmente el SM3.0 no es una revolución. Es muucho mejor que el 2.0 sobre todo por las limitaciones de nº de instrucciones, pero el SM4.0 es el que realmente te ofrece la posibilidad de crear vértices on the fly y ya es un sistema unificado, eliminando las limitaciones de pasar registros de VS a PS.

Título: Actualidad Del Motor
Publicado por: Lord Trancos 2 en 24 de Mayo de 2005, 12:17:25 PM
 Oye, Hadd.

Ya que estas podrias esplicar un poco que es eso del sistema de postproduccion integrado? Es una especie de videopost a lo 3DMax? Que tipo de efectos se pueden conseguir? Como esta montado (asi a groso modo) internamente (¿via render to textures+shaders?) ?
Título: Actualidad Del Motor
Publicado por: Haddd en 24 de Mayo de 2005, 12:23:07 PM
 No la postproducción principalmente es un sistema donde el RT que aplicas se convierte en la textura del siguiente.

Es decir, procesas un efecto y el resultado queda disponible para el siguiente efecto. Principalmente es esto. Luego tienes la facilidad con que el programador puede incluir nuevos efectos, claro. Pero eso como lo hacemos con clases derivadas, se convierte en algo bastante sencillo.

Pero cada efecto que quieras realizar depende completamente del shader que escribas. Ahí sí que no podemos ayudar nada  <_<

Título: Actualidad Del Motor
Publicado por: seryu en 24 de Mayo de 2005, 01:54:44 PM
 yo no estoy muy de acuerdo con lo que comentas de las consolas, normalmente, por las epocas en las que se ha anunciado una consola, esta era como poco igual de potente que los ordenadores de la epoca, la ps2 y xbox mostraban unos graficos impresionantes en sus primeros dias, y las superproducciones de juegos en estas plataformas son dificilmente superables en calidad en los titulos que tenemos en pc, en parte porque la ser un sistema cerrado, permite una optimizacion y eliminacion de bugs muy grande en comparacion a la inmensidad de sistemas que hay en PC, ademas que en PC cualquiera puede sacar un juego y por tanto hay muchos estudios baratos con juegos baratos que suelen estar peor testeados. Pero no estoy contando nada que no sepamos todos.

Hoy una xbox360 puede parecer sorprendente, lo cierto es que en tres años lo que haya en el mercado de PC y de MAC sera superior, aunque solo sea por potencia bruta (ya que el pc arrastra y arrastrara arquitectura vieja por muuucho tiempo, solo hay que ver el AMD64).

¿Que es mas caro? si, pero eso como te digo ya pasas hoy dia. Por 150 euros te puedes comprar una xbox que es un pc barato con dos juegos. Y si le pones un chip puedes liberar toda la potencia: emuladores, dvd multiregion, reproductor multimedia divx/mp3, radio internet, etc etc... incluso montarte una distri linux y , junto con teclado y raton, usarlo como un pc barebone.

Eso no debiera suponer un cambio en la industria del PC, desde hace años sony ha copado el mercado de ocio, y ahora mismo el mayor numero de usuarios y de ventas de videojuegos se registra en la ps2, y con mucha facilidad, ocurra en ps3, siendo el resto de consolas las que se llevan el resto de beneficios.

El mercado de PC ha sido siempre relativamente marginal (teniendo en cuenta como marginal lo que seria el mercado de gamecube al de ps2, claro).

Esto lo digo, basandome en los datos de ventas a lo largo de estos años, no es una apreciacion personal, aunque mi opinion del tema es clara: son plataformas distintas para usuarios distintos e incluso los juegos que venden tienden a ser distintos.

Las consolas no van a reemplazar a un PC, ni viceversa, en el ambito ludico.
Título: Actualidad Del Motor
Publicado por: NeLo en 24 de Mayo de 2005, 03:25:09 PM
 ¿Al final el engine es en inglés o en castellano?

¿Ya se pueden hacer jueguecillos con él?

Saludos!
Título: Actualidad Del Motor
Publicado por: Haddd en 24 de Mayo de 2005, 04:12:56 PM
 Las clases son en inglés, pero la explicación en algunas está en castellano. Al final será todo en inglés y sobre lo de si se pueden hacer jueguecillos con él, sí se podría, pero como todavía estamos cambiando las tripas, mejor ni intentarlo  :D  
Título: Actualidad Del Motor
Publicado por: seryu en 24 de Mayo de 2005, 04:17:55 PM
 soy un hombre curioso ya lo se  :P

a si....... a voz de pronto............... teniendo en cuenta que al ser hobby a veces se curra mas y otra menos..................... cuando crees que habra una version que pueda ser usada con intenciones de hacer un juego.......... aun cuando vaya a cambiar el motor....... pero que al menos tenga una base....... digamos como las primeras versiones del irrlicht, en las que ya la gente se lanzo a hacer cosas

por cierto, irrlicht es una demostracion de como la gente estaba deseando encontrar un engine SIMPLE y SENCILLO de programar. Os recomiendo que persigais la misma meta, dentro del interes que teneis claro de hacerlo por el propio gusto de hacer un motor sin fin alguno.
Título: Actualidad Del Motor
Publicado por: ZeruGiran en 24 de Mayo de 2005, 05:30:15 PM
 ahhhh Yo ya queria usarlo para la compo de 48 horas.

Me baje VC++.Net Express 2005, el toolkit de DirectX, y el Haddd 1.0 Pero no me rula :(

Error :(

¿Aproximadamente cuanto hay que esperar?

¿ Que otros motores hay para C# ?
Título: Actualidad Del Motor
Publicado por: NeLo en 24 de Mayo de 2005, 06:50:28 PM
 El Axiom.

Es un motor para C#, y como libreria gráfica utiliza OGRE (portado a C# claro).

No es sólo graficos, es un motor completo (Axiom me refiero).

Saludos.
Título: Actualidad Del Motor
Publicado por: Haddd en 24 de Mayo de 2005, 07:39:53 PM
 Conocemos los problemas de la versión 1.0. Y estamos seguros de que con la que hay ahora mismo ya se podrían hacer virguerías, pero no queremos aventurarnos, todavía hay cosas de base que tienen qe rehacerse.  
Título: Actualidad Del Motor
Publicado por: Haddd en 04 de Junio de 2005, 03:51:55 PM
 Bueno que sepais que seguimos vivos y que muy pronto habrá nuevo video.

Queríamos que coincidiera con el esteno del capítulo 3 de Star Wars, pero no ha sido posible   :P  ( jajaj es broma  B)  )

Bueno, os aventuramos que esta vez hemos querido ir sobre seguro, y hemos querido mostrar casi todo lo que el motor puede hacer. Estamos dedicando bastante tiempo a ajustar el vídeo para que quede bien. También hemos decidido no grabar en tiempo real, para poder utilizar una resolución mayor que los anteriores videos. Y claro, ya que estábamos, pues, ya que no es tiempo real, pues lo activamos todo y metemos muchas cosas....bueno, no quiero aventurar nada todavía...

Eso sí, diremos la velocidad que nos da el motor en tiempo real y la resolución, para que la gente se haga una idea de lo que es capaz de hacer el motor.

Todavía quedan algunas semanas, porque el audio será importante y supongo que ocupará una semana enterita.

Bueno, os mantenemos informados....