Exemple #1
0
 private void recalcOldDiff(int c)
 {
     gradValues grad = new gradValues();
     grad.a = A[c];
     grad.b = B[c];
     grad.c = C[c];
     grad.d = D[c];
     setGradDiff(c, grad);
     oldDiff[c] = grad.diff;
 }
Exemple #2
0
 private void setGradDiff(int c, gradValues grad)
 {
     grad.diff = 0f;
     for (int s = 0; s < sampleCount; s++)
     {
         float point = ( (float)s + ( jitter ? Random.value : .5f ) )  / (float)sampleCount;
         float sVal = gradients.GetPixelBilinear(point, gradientPosition)[c];
         float gVal = 0f;
         switch (gradientFunction)
         {
             case gFuncs.trigonometric:          gVal = getTrigGradValue(          point, grad.a, grad.b, grad.c, grad.d ); break;
             case gFuncs.asymetricPolynomial:    gVal = getAsymetricPolyGradValue( point, grad.a, grad.b, grad.c, grad.d ); break;
             case gFuncs.symetricPolynomial:     gVal = getSymetricPolyGradValue(  point, grad.a, grad.b, grad.c, grad.d ); break;
             case gFuncs.exponential:            gVal = getExponentialGradValue(   point, grad.a, grad.b, grad.c, grad.d ); break;
         }
         if(clamp) gVal = Mathf.Clamp01(gVal);
         grad.diff += Mathf.Abs(sVal - gVal);
     }
     grad.diff /= (float)sampleCount;
 }
Exemple #3
0
 private void stepChannel(int c)
 {
     List<gradValues> grads = new List<gradValues>();
     for (int v = 0; v < variationCount; v++)
     {
         gradValues grad = new gradValues();
         grad.a = A[c] + Random.Range( -oldDiff[c]/1.5f, oldDiff[c]/1.5f );
         grad.b = B[c] + Random.Range( -oldDiff[c]/1.5f, oldDiff[c]/1.5f );
         grad.c = C[c] + Random.Range( -oldDiff[c]/5.0f, oldDiff[c]/5.0f );
         grad.d = D[c] + Random.Range( -oldDiff[c]/1.5f, oldDiff[c]/1.5f );
         setGradDiff(c, grad);
         grads.Add(grad);
     }
     grads.Sort((a,b)=>a.diff.CompareTo(b.diff));
     if (grads[0].diff < oldDiff[c])
     {
         oldDiff[c] = grads[0].diff;
         A[c] = grads[0].a;
         B[c] = grads[0].b;
         C[c] = grads[0].c;
         D[c] = grads[0].d;
     }
 }