2016-05-13 12 views
-1

Ich versuche, eine zufällige Textur mit einer Zahl basierend auf der Kacheleingabe anzuwenden. Meine Bemühungen führen bisher zu Mustern in der gewählten Anzahl.Zufälligkeit von Kacheln erstellen?

Meine Methode, um darüber zu gehen, hat jeden Fliesenwert mit einem zufälligen Skalar multipliziert und dann entweder multipliziert oder addiert sie zusammen. Rufe die Operationen auf, die ich für jede Kachel "Salz" mache.

Beispiel:

float seed = fract(fract((tile.x+23.42f)*189.28148f) + (tile.y*92001.302+1.235801f)); 

Als ich die beiden „gesalzen“ Kachel Werte zusammen ergibt sich ein Muster hinzufügen. Die Zahlen sind entlang der Diagonalen gleich.

Wenn ich die zwei "gesalzenen" Kachelwerte multipliziere, werden die Zahlen entlang der Diagonalen gespiegelt.

Ich möchte ein wenig mehr Zufälligkeit aus diesen Fliesen-Werte, kann jemand anständig in Mathe helfen?

Shader Codesegment:

vec2 tile = vec2(floor(texCoord_vs.x), floor(texCoord_vs.y)); 
float seed = fract(fract((tile.x+23.42f)*189.28148f) + (tile.y*92001.302+1.235801f)); 
vec2 offset = offset_vs; 
offset.x += floor(seed*7.0f)*TYPE_UNIT_SIZE; 
vec3 diffuseColor = materialDiffuseColor * texture(
    typesheet, vec2((texCoord_vs.x - tile.x)*TYPE_UNIT_SIZE, 
    (texCoord_vs.y - tile.y)*TYPE_UNIT_SIZE) + offset); 

Bild: https://gyazo.com/aada74e81fdc3dbd0220263993ed7d01

+0

Ihr Ziel ist mir nicht ganz klar - versuchen Sie, die x, y-Koordi- nation als Eingabe/Schlüssel zu verwenden, um einen zufälligen Index zu erhalten? – Pikalek

+0

ja, mhm, ja, 1 mehr char –

+0

Was ist der Bereich für die x, y-Koordinaten und den Lookup-Index? – Pikalek

Antwort

0

Sie der Lage sein könnte, die Technik in this question for hashing 2D vectors beschrieben zu verwenden, die wiederum von Optimized Spatial Hashing for Collision Detection of Deformable Objects genommen wurde:

index = (x p1 xor y p2) mod n 

Wo p1, & p2, sind große Primzahlen (sie verwendeten 73856093, & 83492791) und n ist die Größe der Hashtabelle oder in diesem Fall der maximale Zufallsindex, den Sie generieren möchten.

+1

Dies würde funktionieren, akzeptieren, dass es Symmetrie gibt, weil x und y austauschbar sind, wenn sie die gleichen Werte haben. x * p1^y * p2^x * p3 mod n wäre besser. –