Project

General

Profile

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

library / src / main / java / org / distorted / library / effect / VertexEffectScale.java @ 457bd08e

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 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.Data3D;
23
import org.distorted.library.type.Static3D;
24

    
25
///////////////////////////////////////////////////////////////////////////////////////////////////
26
/**
27
 * Scale the Mesh by 3D scale factors.
28
 */
29
public class VertexEffectScale extends VertexEffect
30
  {
31
  private static final EffectName NAME = EffectName.VERTEX_SCALE;
32

    
33
  private Data3D mScale;
34

    
35
///////////////////////////////////////////////////////////////////////////////////////////////////
36
/**
37
 * Only for use by the library itself.
38
 *
39
 * @y.exclude
40
 */
41
  public boolean compute(float[] uniforms, int index, long currentDuration, long step )
42
    {
43
    return mScale.get(uniforms,index+VALUES_OFFSET,currentDuration,step);
44
    }
45

    
46
///////////////////////////////////////////////////////////////////////////////////////////////////
47

    
48
  static String code()
49
    {
50
    return
51

    
52
    "v *= vUniforms[effect].xyz;                        \n" +
53
    "float X = vUniforms[effect].y*vUniforms[effect].z; \n" +
54
    "float Y = vUniforms[effect].x*vUniforms[effect].z; \n" +
55
    "float Z = vUniforms[effect].x*vUniforms[effect].y; \n" +
56
    "n *= vec3(X,Y,Z);                                  \n" +
57
    "n = normalize(n);                                  \n";
58
    }
59

    
60
///////////////////////////////////////////////////////////////////////////////////////////////////
61
// PUBLIC API
62
///////////////////////////////////////////////////////////////////////////////////////////////////
63
/**
64
 * Have to call this before the shaders get compiled (i.e before DistortedLibrary.onCreate()) for the Effect to work.
65
 */
66
  public static void enable()
67
    {
68
    addEffect( NAME, code() );
69
    }
70

    
71
///////////////////////////////////////////////////////////////////////////////////////////////////
72
/**
73
 * Scale the Mesh by 3D scale factors.
74
 *
75
 * @param scale current x- , y- and z- scale factors.
76
 */
77
  public VertexEffectScale(Data3D scale)
78
    {
79
    super(NAME);
80
    mScale = scale;
81
    }
82

    
83
///////////////////////////////////////////////////////////////////////////////////////////////////
84
/**
85
 * Scale the Mesh by 3D scale factors.
86
 *
87
 * @param scale Common x,y, and z scale factor.
88
 */
89
  public VertexEffectScale(float scale)
90
    {
91
    super(NAME);
92
    mScale = new Static3D(scale,scale,scale);
93
    }
94
  }
(28-28/32)