#1074 El LOD en 3D no se entiende como "cantidad de objetos pintados", es una tecnica que se usa para variar dinamicamente (o con varias versiones estaticas) el nivel de detalle de los objetos/terreno dandoles mas o menos poligonos en funcion de algun parametro (distancia, cantidad de personajes, tipo de iluminacion, etc...).
De todas formas no me refiero a instanciacion para reducir el cambio de estados y las llamadas al draw, y si, hay formas de que ambas esten al 50%..., algo que por cierto no es ninguna locura, segun tu logica no existe forma alguna de que cada componente no este al 100% en todo momento..., y como ves, esto no es asi.
Y lo que dicen de que la CPU sea el cuello de botella, si el bucle principal esta BIEN programado (y todos los grandes lo hacen), es IMPOSIBLE que esta sea un cuello de botella, basicamente por que es dinamico el ajuste de los ticks de logica, ticks de predraw y de draw, en todo caso sera mas o menos realista, ya que los ticks de logica pueden quedar demasiado espaciados en el tiempo, y entre ticks de logica todo se interpola (en el predraw), y eso para una CPU de los ultimos..., 10 años es un chiste...
De hecho, la unica forma de saber si la CPU esta siendo el cuello de botella es si recibe una llamada al tick de logica cuando todavia no ha terminado de ejecutar el anterior tick de logica..., esto no es posible, ya que esto se hace en monotarea para que sea mas simple, asi que el resultado de esto seria que en el bucle principal, nada mas salir del tick de logica y ver que le toca hacer, veria que ya tocaba otro tick de logica, con lo que no se pintaria nada, no entraria jamas en el tick de predraw ni de draw..., pantalla en negro, eso SI que es un cuello de botella de CPU.
Un valor tipico para la logica (para los sistemas estaticos) suele ser 30 ticks, ahi se gestiona la logica de personajes, la IA (busqueda de caminos, tablas de decisiones, etc...), la red, y poco mas, esto que parece una locura, es una soberana gilipollez a niveles de calculo de CPU..., podria calcularlo 3000 veces por segundo, asi que imagina lo que es 30..., es un puto chiste.
En predraw solo se interpolan valores (si en el tick 3 el objeto esta en x,y, y en el 4 en z,w, en el predraw solo sabes cuanto tiempo ha pasado de 3 a 4 e interpolas las x,y con z,w (tambien se interpolan otras cuantas cosas, pero vamos, mas chiste todavia aunque sea a 144 ticks por segundo, a lo sumo puedes tener ahi enganchado el motor de fisica, que es lo unico que puede consumir mas, y vamos, tampoco lo va a hacer, lo que mas puede pasar es que necesites sincronizarlo, y ahi viene el otro caso que luego cuento.
En el draw vas llamando a las entidades para que se pinten, estas antiguamente tendrias que calcular animaciones (el skining vamos) en CPU, y subir los nuevos vertices, ahi el bus si que te la puede jugar..., pero eso ya hace milenios que dejo de ser asi, a dia de hoy todo esto se hace en los shaders usando buffers de datos de las animaciones en la propia grafica, solo le pasas una variable por cada tren de animacion y magia..., coste 0 para la CPU.
Como ves las CPU se la rascan a dos manos, y con la potencia que tienen pueden hacer autenticas locuras (no te dire que pueden tirar sin predraw por que no, pero vamos, que 30 ticks por segundo es un chiste para ellas).
El caso que te decia antes es que muchas veces la logica es bastante simple aunque tires 30 ticks de logica por segundo ira de PM, y el pintado debes sincronizarlo en unos margenes para que no explote algo del predraw (por ejemplo la fisica), en esos casos veras que ambas no estan al 100%..., y no hay cuello de botella, de hecho no es nada raro, es lo mas habitual del mundo.
Vamos, que hay millones de casos, asi que puedes ver la CPU al 100% y no ser un cuello de botella (simplemente le sacan hasta la ultima gota, pero no esta frenando nada, simplemente lo ajustan asi, dinamicamente para que ejecute el maximo numero de ticks de logica que pueda e interpolar lo minimo), o puedes ver la CPU al 50% y la grafica al 100%, y aunque la grafica este al tope, no es cuello de botella de nada, puede ser un LOD que en vez de tomar distancias, u otra opcion, simplemente usan tener el maximo posible..., si ven que baja los fps que creen minimo reducen el LOD, o el numero de objetos en pantalla, asi que ira siempre a tope, pero sin cuello de botella.
En resumen, no podeis ver un juego, ver algo al 100% y afirmar que hay un cuello de botella, o verlo al 50% y decir que otro componente lo frena, o analizais el codigo o jamas tendreis ni idea de lo que esta pasando.
P.D.: Ahora me llamaran chulo otra vez...