Project

General

Profile

Download (4.33 KB) Statistics
| Branch: | Revision:

library / src / main / java / org / distorted / library / effect / VertexEffect.java @ 15aa7d94

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2017 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Distorted.                                                               //
5
//                                                                                               //
6
// Distorted is free software: you can redistribute it and/or modify                             //
7
// it under the terms of the GNU General Public License as published by                          //
8
// the Free Software Foundation, either version 2 of the License, or                             //
9
// (at your option) any later version.                                                           //
10
//                                                                                               //
11
// Distorted is distributed in the hope that it will be useful,                                  //
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
14
// GNU General Public License for more details.                                                  //
15
//                                                                                               //
16
// You should have received a copy of the GNU General Public License                             //
17
// along with Distorted.  If not, see <http://www.gnu.org/licenses/>.                            //
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19

    
20
package org.distorted.library.effect;
21

    
22
import org.distorted.library.type.Dynamic;
23
import org.distorted.library.type.Dynamic3D;
24
import org.distorted.library.type.Dynamic4D;
25
import org.distorted.library.type.Static;
26
import org.distorted.library.type.Static3D;
27
import org.distorted.library.type.Static4D;
28

    
29
///////////////////////////////////////////////////////////////////////////////////////////////////
30
// VERTEX EFFECTS
31
// 12 Uniforms: 5 per-effect interpolated values, 3-dimensional center, 4-dimensional Region
32

    
33
public abstract class VertexEffect extends Effect
34
  {
35
  public static final int NUM_UNIFORMS = 12;
36

    
37
  public static final int DISTORT    =0;
38
  public static final int DEFORM     =1;
39
  public static final int SINK       =2;
40
  public static final int PINCH      =3;
41
  public static final int SWIRL      =4;
42
  public static final int WAVE       =5;
43
  public static final int NUM_EFFECTS=6;
44

    
45
  static final int MAX = 5;
46
  private static final int MAX_UNITY_DIM = 3;
47

    
48
  Dynamic mDynamic0;
49
  Static mStatic0;
50
  Dynamic3D mDynamicCenter;
51
  Static3D  mStaticCenter;
52
  Dynamic4D mDynamicRegion;
53
  Static4D  mStaticRegion;
54

    
55
  private final static float[] mUnity= new float[MAX_UNITY_DIM*NUM_EFFECTS];
56
  private final static int[]   mUnityDim = new int[NUM_EFFECTS];
57

    
58
///////////////////////////////////////////////////////////////////////////////////////////////////
59

    
60
  public VertexEffect(int name, float[] unity, int dimension, boolean center, boolean region)
61
    {
62
    super(VERTEX,name,dimension,center,region);
63

    
64
    for(int i=0; i<unity.length; i++)
65
      {
66
      mUnity[name*MAX_UNITY_DIM+i] = unity[i];
67
      }
68

    
69
    mUnityDim[name] = unity.length;
70
    }
71

    
72
///////////////////////////////////////////////////////////////////////////////////////////////////
73

    
74
  public static boolean isUnity(int name, float[] buffer, int index)
75
    {
76
    switch(mUnityDim[name])
77
      {
78
      case 0: return true;
79
      case 1: return buffer[index  ]==mUnity[MAX_UNITY_DIM*name  ];
80
      case 2: return buffer[index  ]==mUnity[MAX_UNITY_DIM*name  ] &&
81
                     buffer[index+1]==mUnity[MAX_UNITY_DIM*name+1];
82
      case 3: return buffer[index  ]==mUnity[MAX_UNITY_DIM*name  ] &&
83
                     buffer[index+1]==mUnity[MAX_UNITY_DIM*name+1] &&
84
                     buffer[index+2]==mUnity[MAX_UNITY_DIM*name+2];
85
      case 4: return buffer[index  ]==mUnity[MAX_UNITY_DIM*name  ] &&
86
                     buffer[index+1]==mUnity[MAX_UNITY_DIM*name+1] &&
87
                     buffer[index+2]==mUnity[MAX_UNITY_DIM*name+2] &&
88
                     buffer[index+3]==mUnity[MAX_UNITY_DIM*name+3];
89
      }
90

    
91
    return false;
92
    }
93
  }
(17-17/23)