Remove JavaScript binding for NativeImage, NinePatchImage, ImageActor and ShaderEffect
[platform/core/uifw/dali-toolkit.git] / node-addon / point-mesh.js
1  var window= {
2            x:0,
3            y:0,
4            width:1920,
5            height: 1080,
6            transparent: false,
7            name:'line-mesh-app'
8  };
9
10  var viewMode={
11        'stereoscopic-mode':'mono', // stereo-horizontal, stereo-vertical, stereo-interlaced,
12        'stereo-base': 65 // Distance in millimeters between left/right cameras typically between (50-70mm)
13  };
14
15  var options= {
16     'window': window,
17     'view-mode': viewMode,
18  }
19
20 var imageDir = "./";
21
22 var dali = require('./build/Release/dali')( options );
23
24 var daliApp = {};
25
26 daliApp.createMeshActor = function() {
27
28       // Create shader
29       var vertShader =
30                "attribute mediump vec2    aPosition;\
31                 attribute highp   float   aHue;\
32                 varying   mediump vec2    vTexCoord;\
33                 uniform   mediump mat4    uMvpMatrix;\
34                 uniform   mediump vec3    uSize;\
35                 uniform   mediump float   uPointSize;\
36                 uniform   lowp    vec4    uFadeColor;\
37                 varying   mediump vec3    vVertexColor;\
38                 varying   mediump float   vHue;\
39                 vec3 hsv2rgb(vec3 c)\
40                 {\
41                   vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\
42                   vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\
43                   return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\
44                 }\
45                 void main()\
46                 {\
47                   mediump vec4 vertexPosition = vec4(aPosition, 0.0, 1.0);\
48                   vertexPosition.xyz *= (uSize-uPointSize);\
49                   vertexPosition = uMvpMatrix * vertexPosition;\
50                   vVertexColor = hsv2rgb( vec3( aHue, 0.7, 1.0 ) );\
51                   vHue = aHue;\
52                   gl_PointSize = uPointSize;\
53                   gl_Position = vertexPosition;\
54                 }";
55
56       var fragShader =
57                "varying mediump vec3  vVertexColor;\
58                 varying mediump float vHue;\
59                 uniform lowp  vec4    uColor;\
60                 uniform sampler2D     sTexture1;\
61                 uniform sampler2D     sTexture2;\
62                 uniform lowp vec4     uFadeColor;\
63                 void main()\
64                 {\
65                   mediump vec4 texCol1 = texture2D(sTexture1, gl_PointCoord);\
66                   mediump vec4 texCol2 = texture2D(sTexture2, gl_PointCoord);\
67                   gl_FragColor = vec4(vVertexColor, 1.0) * ((texCol1*vHue) + (texCol2*(1.0-vHue)));\
68                 }";
69
70       var shaderOptions = {
71               vertexShader : vertShader,
72               fragmentShader: fragShader
73           };
74
75       var shader = new dali.Shader(shaderOptions);
76
77       var material = new dali.Material( shader );
78       var image = new dali.ResourceImage( {url: imageDir + "image-1.jpg"} );
79       material.addTexture(image, "sTexture");
80
81       // Create vertex buffer
82       var polyhedraVertexFormat ={ "aPosition" : dali.PROPERTY_VECTOR2,
83                                      "aHue"      : dali.PROPERTY_FLOAT    };
84
85       var numSides = 20;
86       var angle = 0;
87       var sectorAngle = 2.0 * Math.PI / numSides;
88
89       var polyhedraVertexData = [];
90       for(i=0; i<numSides; ++i)
91       {
92         var positionX = Math.sin(angle) * 0.5;
93         var positionY = Math.cos(angle) * 0.5;
94         var hue = angle / ( 2.0 * Math.PI);
95
96         polyhedraVertexData[i*3+0] = positionX;
97         polyhedraVertexData[i*3+1] = positionY;
98         polyhedraVertexData[i*3+2] = hue;
99
100         angle += sectorAngle;
101       }
102
103       var polyhedraVertexDataArray = new Float32Array(polyhedraVertexData.length);
104       polyhedraVertexDataArray.set(polyhedraVertexData, 0);
105       var polyhedraVertices = new dali.PropertyBuffer(polyhedraVertexFormat, numSides);
106       polyhedraVertices.setData(polyhedraVertexDataArray);
107
108       // Create geometry
109       var geometry = new dali.Geometry();
110       geometry.addVertexBuffer( polyhedraVertices );
111       geometry.setGeometryType( dali.GEOMETRY_POINTS );
112
113       var renderer = new dali.Renderer(geometry, material);
114       renderer.registerAnimatableProperty("uFadeColor", [1.0, 0.0, 1.0, 1.0]); // Green
115       renderer.registerAnimatableProperty("uPointSize", 80.0);
116       renderer.depthIndex = 0;
117
118       // Create mesh actor
119       var meshActor = new dali.Actor();
120       meshActor.addRenderer( renderer );
121       meshActor.size = [400, 400, 0];
122       meshActor.parentOrigin = dali.CENTER;
123       meshActor.anchorPoint = dali.CENTER;
124       meshActor.registerAnimatableProperty("uFadeColor", [0.0, 1.0, 0.0, 1.0]); // Magenta
125
126       dali.stage.add( meshActor );
127
128       // Animate the mesh actor
129       var animation = new dali.Animation(5);
130       var animOptions = { alpha:"linear", delay:0, duration:5};
131       var rotation = new dali.Rotation(360,0,0,1);
132       animation.animateBy( meshActor, "orientation", rotation, animOptions );
133       animation.setLooping(true);
134       animation.play();
135 }
136
137 function startup()
138 {
139   daliApp.init();
140 }
141
142 daliApp.init = function()
143 {
144   daliApp.createMeshActor();
145 }
146
147
148 startup();
149