Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» le forum fourre tout
Une découverte probablement majeure pour la 3D sur Oric !! EmptyMar 30 Juin 2020 - 13:11 par Admin

» besoin cable coleur et interface de lecture sd card
Une découverte probablement majeure pour la 3D sur Oric !! EmptyJeu 25 Juin 2020 - 11:56 par kenneth

» I had a dream .. glOric
Une découverte probablement majeure pour la 3D sur Oric !! EmptySam 6 Juin 2020 - 14:18 par jbperin

» Multi soluces...
Une découverte probablement majeure pour la 3D sur Oric !! EmptyMar 19 Mai 2020 - 12:41 par soft-bug

» Des nouvelles de BAS_ORIC
Une découverte probablement majeure pour la 3D sur Oric !! EmptyMer 6 Mai 2020 - 16:08 par goyo

» 3D walkthrough template en moins de 600 lignes de C
Une découverte probablement majeure pour la 3D sur Oric !! EmptyMer 29 Avr 2020 - 20:43 par Star42

» CB2 micro
Une découverte probablement majeure pour la 3D sur Oric !! EmptySam 11 Avr 2020 - 19:29 par jbperin

» Le bonjour de codeur
Une découverte probablement majeure pour la 3D sur Oric !! EmptyMer 1 Avr 2020 - 15:18 par Invité

» [résolu] Format des fichiers Hyperbasic...
Une découverte probablement majeure pour la 3D sur Oric !! EmptySam 28 Mar 2020 - 19:50 par damien

» [résolu] Récupération contenu disquettes 3 pouces...
Une découverte probablement majeure pour la 3D sur Oric !! EmptyVen 27 Mar 2020 - 15:06 par damien

» Echange de jeux/logiciels
Une découverte probablement majeure pour la 3D sur Oric !! EmptyLun 23 Mar 2020 - 20:15 par Star42

» Ordi Portable Sony VAIO
Une découverte probablement majeure pour la 3D sur Oric !! EmptyDim 22 Mar 2020 - 16:17 par froggy

» une atan2 pour vos lib math
Une découverte probablement majeure pour la 3D sur Oric !! EmptyDim 22 Mar 2020 - 11:30 par drpsy

» nouveau site
Une découverte probablement majeure pour la 3D sur Oric !! EmptyJeu 19 Mar 2020 - 20:02 par Star42

» CEO Mag Spéciaux disponibles
Une découverte probablement majeure pour la 3D sur Oric !! EmptyJeu 19 Mar 2020 - 9:33 par musepat

Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 208 membres enregistrés
L'utilisateur enregistré le plus récent est darq

Nos membres ont posté un total de 8573 messages dans 746 sujets
Portail ORIC



Le deal à ne pas rater :
Clé de licence Windows 10 PRO à 9,99€ (version téléchargeable)
9.99 €
Voir le deal

Une découverte probablement majeure pour la 3D sur Oric !!

Aller en bas

Une découverte probablement majeure pour la 3D sur Oric !! Empty Une découverte probablement majeure pour la 3D sur Oric !!

Message par jbperin le Ven 13 Déc 2019 - 14:46

Une découverte incroyable vient probablement d'être faite dans les laboratoires de recherche en charge du projet glOric.

En effet, une équipe de chercheur a récemment découvert que:  
lorsque abs(X)>abs(Y) , SQRT(X^2 + Y^2) est à peu près égal à abs(X) + abs(Y) * (sqrt(2) -1)

Dingue !!
Cette découverte est de nature à considérablement faire chuter le nombre de cycle consommés par les routines du moteur de glOric.
En effet, glOric repose sur deux opérateurs pour ses projections de la 3D vers la 2D écran:

  1. une arctangente (au sujet duquel l'auteur vous a déjà bien bourré le mou :-)
  2. un calcul de norme euclidienne basée sur une racine carré et deux élévations au carré.

Hé bien c'est justement ce deuxième opérateur qui risque de se prendre une méchante accélération.
Les opérations d'élévation au carré et d'extraction de racine sont hyper chronophages ..
Et grâce à cette découverte, elles vont pouvoir être remplacées par une multiplication par une constante (qui pourra être mise en abaque ) et une addition
Je vous raconte pas la gueule du compteur de cycle ..

Interrogé en marge de l'annonce officielle de cette découverte, le responsable communication a expliqué:
jbperin a écrit:
Après la sortie de la démo pour René, l'équipe de recherche et développement restait dubitative malgré le bon accueil d'une partie de la communauté. Les équipes en charge du rendu 2D se plaignaient du peu de moyen dont ellels disposaient. Aujourd'hui, cette découverte apporte un immense bol d'air. Le budget cycle dégagé grâce à cette découverte va pouvoir être réaffecter à la rasterization. C'est le projet entier qui va y gagner

Il a ensuite ajouté:

jbperin a écrit:
Bon .. c'est pas le tout mais va falloir coder le merdier maintenant .. vous savez s'il reste du champagne au buffet ?
jbperin
jbperin

Messages : 114
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Une découverte probablement majeure pour la 3D sur Oric !! Empty Re: Une découverte probablement majeure pour la 3D sur Oric !!

Message par jbperin le Sam 14 Déc 2019 - 8:37

Bon ben les résultats viennent de tomber :
La bonne nouvelle: division par 3 du nombre de cycle !! une vraie tuerie. on passe de 1500 cycles pour projeter un point à 500 cycles.
Par contre, déconvenue : des aberrations de perspective apparaissent et l'effet fish eye est encore plus prononcé ..
==> voir si une partie des cycles économisés peut permettre de bricoler une compensation des distorsions.
L'aventure continue ...
jbperin
jbperin

Messages : 114
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Une découverte probablement majeure pour la 3D sur Oric !! Empty Re: Une découverte probablement majeure pour la 3D sur Oric !!

Message par jbperin le Lun 23 Déc 2019 - 12:15

Bonjour tout le monde,

Quelques nouvelles de mes avancées dans la recherche d'une routine de projection 3D super rapide.

J'en étais à m'attaquer à  la norme euclidienne:  z = sqrt (x^2 + y^2)


Une découverte probablement majeure pour la 3D sur Oric !! GlobalPerfectNorm

Cette fonction et symétrique, on peut se concentrer uniquement sur les valeurs positives de x et y.

Voici à quoi ressemble cette fonction sur l'espace des x et y positifs:

Une découverte probablement majeure pour la 3D sur Oric !! LocalPerfectNorm

Comme c'est très "plat", ma première idée avait été de l'approximer par un plan en interpolant linéairement entre les axes x=0 et y=x par un algo de la forme:

Code:
SI abs(x)>abs(y)
 Z = abs(x) + abs(y) * (sqrt(2) -1)
SINON
 Z = abs(x) + abs(y) * (sqrt(2) -1)
FINSI

Voici à quoi ressemble ce plan.


Une découverte probablement majeure pour la 3D sur Oric !! PlanApproxNorm

Obtenu en tapant :if (x>y, x + y * (sqrt(2) -1), y + x * (sqrt(2) -1)) sur academo.org

L'intérêt c'est que le calcul n'implique que:
- une comparaison
- un adressage indexé (pour la multiplication par une constante qu'on peut mettre en abbaque)
- une addition.

Mais il s'est avéré que l'approximation par un plan était trop imprécise comme le montre la figure suivante représentant la différence entre la valeur réelle et l'approximation par un plan.


Une découverte probablement majeure pour la 3D sur Oric !! FirstOrderNormError

Obtenu en tapant :if (x>y, sqrt (x^2 + y^2) - (x + y * (sqrt(2) -1)), sqrt (x^2 + y^2) -(y + x * (sqrt(2) -1))) sur academo.org

L'erreur arrive à plus de 10 en valeur absolue.

Après avoir constaté que l'erreur était la plus grande au centre ma zone d'approximation (là où Y = X/2), j'ai décidé de faire une approximation par deux plans pluôt qu'un.  


Code:
if ax >= ay:
 x, y = ax, ay
else:
 x, y = ay, ax
if y > x/2 :
 Z = C*x + D*Y
else:
 Z = A*x + B*y


L'intérêt de cette forme reste qu'en assembleur, elle peut se réaliser par :
- deux comparaisons
- deux adressages indirect
- une somme

Par le calcul manuel je suis arrivé à :

Code:
A = 1.0
B = math.sqrt(5) - 2
C = math.sqrt(5)-math.sqrt(2)
D = 2*math.sqrt(2) - math.sqrt(5)


Les résultats étaient déjà sympas comme le montre cette représentation de l'erreur (erreur inférieure à 3.5):


Une découverte probablement majeure pour la 3D sur Oric !! TwoPlanNormApproxError

Mais je ne me suis pas arrêté là ..

J'ai utilisé cette combinaison de valeur comme point de départ d'une recherche de combinaison optimale, par regression linéaire des moindre carré sur l'erreur.

Et, puisque les tables de multiplication A, B, C et D allaient être des abbaques, je me suis dit qu'il était possible d'y mettre autre chose qu'une fonction affine. Et j'ai décidé de faire rechercher (par l'ordinateur du 21ème siècle) une fonction polynomiale du second ordre pour chaque table A B C et D

L'idée c'est de, tout en gardant le temps de calcul évoqué plus haut (puis que la fonction polynomiale sera mise en abbaque), disposer d'une fonction de calcul de la forme suivante:


Code:
if ax >= ay:
 x, y = ax, ay
else:
 x, y = ay, ax
if y > x/2 :
 Z = C2 * (x^2) + C1 * x + C0 + D2 * (y^2) + D1 * y + D0
else:
 Z = A2 * (x^2) + A1 * x + A0 + B2 * (y^2) + B1 * y + B0


Car un choix précis des coefficients A0, A1, A2, B0, B1, B2, C0, C1, C2, D0, D1, D2 permet aux erreurs de se compenser !!

L'erreur finale a cet aspect:


Une découverte probablement majeure pour la 3D sur Oric !! NormFinalError

L'erreur est inférieure à 2 en valeur absolu et elle est un peu plus centrée autour de 0.

Après un tunning manuel de quelques valeurs proche de 0, je suis arrivé à une erreur inférieure à 11% (erreur d'arrondi comprise) sur tout le domaine de définition.

Il est possible d'aller encore plus loin dans la fidélité de l'approximation en utilisant un algo de backtracking pour le choix des arrondis.

Le choix d'une approximation biplanaire a permis de diviser par trois le temps de calcul de la norme euclidienne.

Sans trop sacrifier à la précision.

Une découverte probablement majeure pour la 3D sur Oric !! BiplanarApprox

Retrouvez les outils utilisés, le abaques obtenues et le code utilisé sur le dépôt glOric sur Oric Software.

Pour avoir un rendu, télécharger les démos depuis le post de démo sur DefenseForce

Joyeux Noël à tous
jbperin
jbperin

Messages : 114
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Une découverte probablement majeure pour la 3D sur Oric !! Empty Re: Une découverte probablement majeure pour la 3D sur Oric !!

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum