VBO multipli con OpenGL ES 2.0

Emscripten e WebAssembly

Di recente ho iniziato un nuovo progettino, per il quale sto usando SDL e OpenGL ES 2.0.

Durante il lockdown, avevo imparato a fare qualcosa di base con OpenGL 3.3, e avevo usato sempre SDL e un po’ Bullet, ma poi avevo lasciato stare il tutto. Adesso ho ricominciato, ma con OpenGL ES 2.0 perché offre una possibilità molto interessante: con Emscripten, si può compilare il progetto per WebAssembly, e GLES 2.0 viene trasformato direttamente in WebGL.

Pur non essendo più molto appassionato di sviluppo web, questa cosa mi attrae particolarmente. Innanzitutto, pubblicando sul web si possono raggiungere più persone, anche per il solo fatto che aspettare qualche secondo che si carichi una pagina è molto meno impegnativo che far scaricare uno zip, decompattarlo, e far avviare il programma. E non parliamo nemmeno degli installanti…

Il codice può essere sviluppato praticamente in qualsiasi linguaggio (C, C++, o qualcosa che abbia un interprete/una VM scritta in questi linguaggi), ma poi si può interfacciare al JavaScript che gira nel browser. Questo vuol dire che potrei fare le parti di rendering 3D in C++, ma le parti di UI in HTML, CSS e JavaScript. Le ultime volte che ho provato a fare qualcosa in JS mi sono stufato subito, però, per fare UI, lo stack web ha pochi eguali. … [Leggi il resto]

La solita vecchia TIM

Dopo molto tempo, mi trovo di nuovo a commentare la mia linea dati fissa con TIM.

Nelle puntate precedenti

Per tanti anni, ho avuto diversi problemi, tra cui velocità molto basse, disconnessioni frequenti, tutti legati all’ultimo miglio. E ci hanno addirittura fatto cambiare tutti i cavi dal palo TIM al router, prima di ammettere che la colpa era loro. I vicini invece hanno rinunciato ad avere Internet tramite rame e sono passati ad Eolo.

Ad un certo punto, a luglio 2017, abbiamo scoperto che era disponibile la FTTC, il che mi aveva abbastanza stupito, visto che abito in aperta campagna, e abbiamo fatto l’upgrade.

Era partito veramente bene: sono stati velocissimi ad attivarlo, una cosa come 3-4 giorni. La latenza era ed è ancora totalmente accettabile, circa 10,5ms di ping verso gli OpenDNS al MIX, 23ms verso il mio sito, che è nel datacenter OVH di Strasburgo.

I nuovi problemi

Invece i bitrate dagli 80Mbps/20Mbps rispettivamente di download e upload iniziali, col tempo sono scesi, fino ai 35Mbps/10Mbps che ho da un po’ di tempo. Nel frattempo TIM ha abbassato la banda minima garantita da 40Mbps/4Mbps a 30Mbps/3Mbps, quindi non posso nemmeno fare un reclamo per le basse prestazioni. … [Leggi il resto]

Il Macbook ARM

Lunedì Apple ha annunciato un Macbook dotato di processore ARM, anziché di un processore Intel x86, la piattaforma da loro usata negli ultimi quasi 15 anni.

Già da qualche tempo gli appassionati si aspettavano che sarebbe successo, e non sono rimasti troppo stupiti dalla notizia, però ogni decisione di Apple fa discutere molto anche chi non normalmente non si interessa di questo settore.

Il risultato è che a volte ci sono commenti, o addirittura articoli di siti più o meno specializzati imprecisi, se non fuorvianti. Altre volte invece sono gli hater di Apple a cambiare significato alle notizie. Ho deciso quindi di fare un paio di commenti anche io.

I propri processori/silicio

Apple progetta da diversi anni i processori dei suoi telefoni e tablet, ma non direi che “propri” sia la parola corretta.

Apple compra la proprietà intellettuale da ARM Holdings, una società che appunto vende proprietà intellettuale a chi è interessato. Hanno davvero tante linee: dai processori più economici da meno di 1€ per l’embedded (e.g. per i controller delle stampanti 3D), a CPU per supercomputer, passando praticamente per tutti gli smartphone e tablet. … [Leggi il resto]

A dynamic character controller for Bullet?

Or, how I tried to create a dynamic character controller for Bullet, but eventually (almost?) gave up.

Motivations

I like spending some time using the Bullet physics library, I already wrote some articles about my experiments with it. This time, I wanted to create a custom character controller.

Bullet alread provides a (kinematic) character controller, but in general it is not regarded as a good one. I also tried to study a bit its code, but, in my opinion, it adds many complications without reason, and even something like managing in the correct way the velocity is a big problem with it. Indeed, Erwin Coumans himself (the main Bullet developer) said that btKinematicCharacterController is not supported anymore.

Therefore I decided to write my own one.

There are two kinds of character controller: kinematic ones and dynamic ones.

The former use the Physics engine, if any, just for collisions, and compute all the movements by themselves. This was the only way at the beginning of the video games, since there was not any Physics engine at all, but only some code for specific purposes. … [Leggi il resto]

Mirror su OneDrive

Il problema

Una persona, già da diverso tempo, mi ha chiesto di aiutarla a mantenere un mirror delle cartelle importanti di un suo file server Linux sull’account OneDrive, siccome, con Office, lì ha 1TB di spazio.

Stiamo parlando di meno di 500000 file per una dimensione di circa 250GB, quindi non qualcosa di assurdamente grande, ma neanche qualcosa di proprio semplice da gestire.

Finora ho provato sia con rclone, un tool per eseguire operazioni su diversi provider cloud, in particolare di copia e sincronizzazione, sia con quello che è uno dei più diffusi client OneDrive nativi Linux, ma nessuno dei due è riuscito a gestire la cosa.

rclone deve essere uno strumento molto utile per molte situazioni, ma non per questa, perché penso che faccia costantemente richieste per verificare la struttura dei dati in OneDrive, anziché tenersi delle informazioni in locale, ma per questo motivo Microsoft lo rallenta costantemente. Invece il client OneDrive ha un database locale, ma magari a volte ci sono delle inconsistenze e si ferma, con delle eccezioni; in particolare mi sembra non gestisca bene l’essere case insensitive di OneDrive. … [Leggi il resto]