Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Ziple

Pages: [1] 2
1
Code / Re : How to play sound in Shadertoy
« on: 11 August 2014 à 23:09:23  »
La fonction instrument génère un sample pour une fréquence donnée, à un temps donné: c'est à dire la valeur de l'échantillon qu'on mesurerait (avec un micro) si l'on avait vraiment joué (sur un instrument physique équivalent) la note de fréquence donnée il y a exactement tel temps.

Ce qu'il fait avec ça macro D (pour drum je pense), c'est en quelque sorte coder les coups de percussions. Les nombres en paramètres sont le nombres de beats (du tempo) entre chaque coup.
Par exemple
Code: [Select]
D(36)D(2)D(2)D(20)D(2)D(16)D(6)D(2)D(226)Veut dire: premier coup à 36 beats après le début, puis deux après, puis encore deux après etc...
La variable x contient le temps inférieur à t et le plus proche de t où il y a eu une percussion. (La variable est initialisée à t entre chaque note car ça fait saturer l'instrument je pense, donc en fait on l'entend pas).

Le tint permet de régler le temps que va durer chaque percussion je pense.

(j'y connais rien en musique donc je dis sûrement des conneries avec les tempos et tout ça)

Et pour es histoires de
Code: [Select]
    // put the 1st instrument on the left
    y += vec2(0.7,0.3)*doChannel1( time ); // main instrument
    // put the 1st instrument on the right
    y += vec2(0.3,0.7)*doChannel2( time ); // secondary instrument
C'est pour sortir du son stéréo. L'instrument principal s'entend mieux à gauche, l'autre à droite. Ils sont complétement symétrique là.

2
Blabla de sceners / Re : Présentations
« on: 02 August 2014 à 22:20:25  »
Il y a des gens ici (pris par les affres de la réalité de la vie socio-professionnelle parfois)! Bienvenue!

3
Blabla de sceners / Re : Tokyodemofest 2015
« on: 20 July 2014 à 19:59:15  »
Oh... La chance! Foncez tant que vous pouvez!

4
Code / Re : Volumetric light ?
« on: 06 November 2013 à 09:26:56  »
(Oups pour l'additif). On va dire que c'est une erreur de jeunesse.
C'est pas bête la technique d'ajout/diminution de la valeur du Z pour les milieux homogènes :)

5
Code / Re : Volumetric light ?
« on: 04 November 2013 à 16:05:38  »
En raymarching, ça a l'air de se faire. A ce que j'ai compris de ça, page 17:
 On discrétise le rayon entre la caméra et le point atteint (ou "l'infini" que l'on fixe à une certaine distance): à chaque point échantillon du rayon, on regarde si l'on peut remonter à la lumière. Si oui on ajoute une quantité alpha qui dépend de la distance du point échantillon à la lumière (la décroissance de la radiance est exponentielle). On obtient ainsi la valeur à ajouter à l'image de départ en faisant un blending additif.

Je sais pas si c'est très clair... Mais tout se fait dans un pixel shader: celui-du raymarching.

(C'est peut-être plus intéressant de fixer le nombre d'échantillons sur le rayon en fonction de la longueur du rayon: si le rayon est court, on fait peu d'échantillons).

6
Productions / Re : Black Ink
« on: 06 August 2013 à 21:28:59  »
J'avais déjà vu sur le site du produit, et ça m'a l'air très bon : Techniquement ça a l'air de s'appuyer sur des trucs sympas, et avec du talent ça a l'air possible de faire des trucs très sympas!

Je te souhaite d'en vendre par palettes et porte-conteneurs :)

7
Blabla de sceners / Re : Présentations
« on: 28 July 2013 à 09:48:39  »
Bienvenue à toi l'ami :)

Mais pitié, ne relance pas le débat houleux "les démos sont des œuvres d'art"...

8
Code / Re : Compute shaders, quelques questions
« on: 18 July 2013 à 18:03:32  »
@xoofx:
Merci bien, je vais potasser tout ça :)

Je partagerai quand j'aurai fait tout ça (update+culling+sort) pour voir si vous trouvez des trucs à dire sur mon code. Dans deux semaines ou un truc du genre.

@patapom:
J'utilise le SDK Win8 pour directx avec VS2012, et ça marche super bien :) Par contre il y a plus de pix, c'est dans visual studio maintenant (mais mieux).

9
Code / Re : Compute shaders, quelques questions
« on: 16 July 2013 à 18:43:20  »
Ok merci pour les précisions :)

Pour les particules, j'aimerais qu'elles interagissent, juste pour voir :) Et puis c'est aussi pour des raisons pédagogiques.

J'ai vu qu'il y a un exemple de bitonic sort dans le directx sdk de juin 2010, je vais le regarder et le modifier pour qu'il supporte des entrées dont la taille n'est pas une puissance de deux si possible (soit à la bourrin en ajoutant la valeur max jusqu'à atteindre une puissance de deux, soit en faisant un truc mieux).

10
Code / Compute shaders, quelques questions
« on: 15 July 2013 à 22:17:30  »
Bonsoir à tous,

Je viens de commencer à m'intéresser aux computes shaders, et comme j'ai jamais trop fait de programmation parallèle sur GPU, je sais pas trop comment faire pour optimiser le code/exécution du code. D'où pleins de questions :)

(J'utilise DirectCompute, donc j'utiliserai sa dénomination, je ne connais pas celles de OpenGL/OpenCL/CUDA  :-[ ).

Tout d'abord, comment choisir le nombre de thread groups que l'ont va utiliser (paramètres de Dispatch() quoi)? Est-ce que par exemple si j'ai 80 shader cores sur ma AMD HD5470 (oui, c'est du très bas de gamme :-° ), je dois distribuer sur 80 groupes?

Dans le même genre, comment choisir le nombre de threads par groupe? A ce que je crois savoir (mais je sais pas trop en fait) lorsque un thread est bloqué par l'attente de l'arrivée de données pas dans le cache local, le gpu passe à un autre thread (j'ai vu le terme wavefront souvent, mais je ne sais plus ce que c'est). Donc il faudrait en mettre un certain nombre, mais combien?

Mon but final serait de faire un compute shader pour gérer la mise à jour de particules, puis qu'il fasse un tri selon la profondeur des particules (car ces particules sont ensuite étendues en des cubes, et je veux minimiser le pixel overdraw). Quelqu'un a déjà fait dans le truc et aurait des conseils spécifiques?

Merci pour votre aide :)

11
Génial pour les maths :)

12
Code / Re : voxlap (voxel software)
« on: 27 June 2013 à 20:31:16  »
J'ai regardé aussi. ça m'a convaincu de faire des efforts de clarté et pour la documentation du code. Parce que, déjà avec des noms de variables explicites et des commentaires ça serait tellement mieux :/ ...
Ce code a une vertu pédagogique. On devrait le montrer partout :).

13
Code / Re : Recalcul de normales dans le vertex shader
« on: 18 June 2013 à 11:44:11  »
Là Patappom t'a parlé de ce qu'on appelle les surfaces implicites en mathématiques: ce sont des surfaces constituées de points (x,y,z)  qui vérifient F(x,y,z)=0. Par exemple, pour une sphère on peut utiliser F(x,y,z) = x*x + y*y +z*z - r*r où r est le rayon.
Et Patapom t'a dit comment récupérer la normale à la surface en chaque point de la surface: il s'agit du gradient de F normalisé.

Pour calculer ce gradient, il y alors deux possibilités. Soit on connaît l'expression des dérivées partielles, soit on utilise la méthode numérique "à la raymarching" .
Pour calculer analytiquement la dérivée partielle selon la variable x de F, il suffit de dériver la fonction de la seule variable x (y et z étant considérés comme fixes). Par exemple, pour la sphère, F(x,y,z) = x*x + y*y + z*z - r*r. La dérivée partielle par rapport à x est donc (dF/dx)(x,y,z) = 2x.

Mais peut-être que ce que tu fais ne peut-être ramené à l'évaluation d'une surface implicite. Peut-être que le plus simple est alors de reconstruire les normales dans un geometry shader.

14
Code / Re : Orienter un quad selon un vecteur
« on: 13 June 2013 à 12:41:08  »
Non, jamais :/

15
Code / Re : Orienter un quad selon un vecteur
« on: 13 June 2013 à 11:11:05  »
Je mets mon code, au cas où quelqu'un voudrait faire pareil:
Code: [Select]
// Returns a rotation matrix that transforms the (0,1,0) axis to N.
kT::Matrix4f32 GetRotation( const kT::Vector3f32& N )
{
    float cosp = N.y;
    float sinp = sqrt( 1.0f - cosp * cosp );
    float coso = 1.f;
    float sino = 0.f;

    float l = sqrt(N.z * N.z + N.x * N.x);
    if( l > 0.f )
    {
        coso = N.z / l;
        sino = sqrt( 1.0f - coso * coso );
        if( N.x < 0 )
            sino *= -1.0f;
    }

    // column-major
    kT::Matrix4f32 m;
    m.LoadIdentity();
    m._11 = coso;
    m._21 = sino*sinp;
    m._31 = sino*cosp;
    m._22 = cosp;
    m._32 = -sinp;
    m._13 = -sino;
    m._23 = coso*sinp;
    m._33 = coso*cosp;
    return m;
}

Pages: [1] 2