This commit is contained in:
Alexander Biryukov 2018-05-31 19:47:36 +05:00
parent c5b64370cc
commit 24fd919de3
4 changed files with 24 additions and 849 deletions

View File

@ -1,844 +1,7 @@
{ {
"lines": [ "lines": [
{ {"start": [-500, -500], "end": [500, -500], "color": [0.3, 0.3, 0.0]},
"start": [ {"start": [500, -500], "end": [500, 500], "color": [0.0, 0.3, 0.15]},
-500, {"start": [500, 500], "end": [-500, -500], "color": [0.25, 0, 0.4]}
-500
],
"end": [
500,
-500
]
},
{
"start": [
-500,
-488
],
"end": [
500,
-488
]
},
{
"start": [
-500,
-476
],
"end": [
500,
-476
]
},
{
"start": [
-500,
-464
],
"end": [
500,
-464
]
},
{
"start": [
-500,
-452
],
"end": [
500,
-452
]
},
{
"start": [
-500,
-440
],
"end": [
500,
-440
]
},
{
"start": [
-500,
-428
],
"end": [
500,
-428
]
},
{
"start": [
-500,
-416
],
"end": [
500,
-416
]
},
{
"start": [
-500,
-404
],
"end": [
500,
-404
]
},
{
"start": [
-500,
-392
],
"end": [
500,
-392
]
},
{
"start": [
-500,
-380
],
"end": [
500,
-380
]
},
{
"start": [
-500,
-368
],
"end": [
500,
-368
]
},
{
"start": [
-500,
-356
],
"end": [
500,
-356
]
},
{
"start": [
-500,
-344
],
"end": [
500,
-344
]
},
{
"start": [
-500,
-332
],
"end": [
500,
-332
]
},
{
"start": [
-500,
-320
],
"end": [
500,
-320
]
},
{
"start": [
-500,
-308
],
"end": [
500,
-308
]
},
{
"start": [
-500,
-296
],
"end": [
500,
-296
]
},
{
"start": [
-500,
-284
],
"end": [
500,
-284
]
},
{
"start": [
-500,
-272
],
"end": [
500,
-272
]
},
{
"start": [
-500,
-260
],
"end": [
500,
-260
]
},
{
"start": [
-500,
-248
],
"end": [
500,
-248
]
},
{
"start": [
-500,
-236
],
"end": [
500,
-236
]
},
{
"start": [
-500,
-224
],
"end": [
500,
-224
]
},
{
"start": [
-500,
-212
],
"end": [
500,
-212
]
},
{
"start": [
-500,
-200
],
"end": [
500,
-200
]
},
{
"start": [
-500,
-188
],
"end": [
500,
-188
]
},
{
"start": [
-500,
-176
],
"end": [
500,
-176
]
},
{
"start": [
-500,
-164
],
"end": [
500,
-164
]
},
{
"start": [
-500,
-152
],
"end": [
500,
-152
]
},
{
"start": [
-500,
-140
],
"end": [
500,
-140
]
},
{
"start": [
-500,
-128
],
"end": [
500,
-128
]
},
{
"start": [
-500,
-116
],
"end": [
500,
-116
]
},
{
"start": [
-500,
-104
],
"end": [
500,
-104
]
},
{
"start": [
-500,
-92
],
"end": [
500,
-92
]
},
{
"start": [
-500,
-80
],
"end": [
500,
-80
]
},
{
"start": [
-500,
-68
],
"end": [
500,
-68
]
},
{
"start": [
-500,
-56
],
"end": [
500,
-56
]
},
{
"start": [
-500,
-44
],
"end": [
500,
-44
]
},
{
"start": [
-500,
-32
],
"end": [
500,
-32
]
},
{
"start": [
-500,
-20
],
"end": [
500,
-20
]
},
{
"start": [
-500,
-8
],
"end": [
500,
-8
]
},
{
"start": [
-500,
4
],
"end": [
500,
4
]
},
{
"start": [
-500,
16
],
"end": [
500,
16
]
},
{
"start": [
-500,
28
],
"end": [
500,
28
]
},
{
"start": [
-500,
40
],
"end": [
500,
40
]
},
{
"start": [
-500,
52
],
"end": [
500,
52
]
},
{
"start": [
-500,
64
],
"end": [
500,
64
]
},
{
"start": [
-500,
76
],
"end": [
500,
76
]
},
{
"start": [
-500,
88
],
"end": [
500,
88
]
},
{
"start": [
-500,
100
],
"end": [
500,
100
]
},
{
"start": [
-500,
112
],
"end": [
500,
112
]
},
{
"start": [
-500,
124
],
"end": [
500,
124
]
},
{
"start": [
-500,
136
],
"end": [
500,
136
]
},
{
"start": [
-500,
148
],
"end": [
500,
148
]
},
{
"start": [
-500,
160
],
"end": [
500,
160
]
},
{
"start": [
-500,
172
],
"end": [
500,
172
]
},
{
"start": [
-500,
184
],
"end": [
500,
184
]
},
{
"start": [
-500,
196
],
"end": [
500,
196
]
},
{
"start": [
-500,
208
],
"end": [
500,
208
]
},
{
"start": [
-500,
220
],
"end": [
500,
220
]
},
{
"start": [
-500,
232
],
"end": [
500,
232
]
},
{
"start": [
-500,
244
],
"end": [
500,
244
]
},
{
"start": [
-500,
256
],
"end": [
500,
256
]
},
{
"start": [
-500,
268
],
"end": [
500,
268
]
},
{
"start": [
-500,
280
],
"end": [
500,
280
]
},
{
"start": [
-500,
292
],
"end": [
500,
292
]
},
{
"start": [
-500,
304
],
"end": [
500,
304
]
},
{
"start": [
-500,
316
],
"end": [
500,
316
]
},
{
"start": [
-500,
328
],
"end": [
500,
328
]
},
{
"start": [
-500,
340
],
"end": [
500,
340
]
},
{
"start": [
-500,
352
],
"end": [
500,
352
]
},
{
"start": [
-500,
364
],
"end": [
500,
364
]
},
{
"start": [
-500,
376
],
"end": [
500,
376
]
},
{
"start": [
-500,
388
],
"end": [
500,
388
]
},
{
"start": [
-500,
400
],
"end": [
500,
400
]
},
{
"start": [
-500,
412
],
"end": [
500,
412
]
},
{
"start": [
-500,
424
],
"end": [
500,
424
]
},
{
"start": [
-500,
436
],
"end": [
500,
436
]
},
{
"start": [
-500,
448
],
"end": [
500,
448
]
},
{
"start": [
-500,
460
],
"end": [
500,
460
]
},
{
"start": [
-500,
472
],
"end": [
500,
472
]
},
{
"start": [
-500,
484
],
"end": [
500,
484
]
},
{
"start": [
-500,
496
],
"end": [
500,
496
]
}
] ]
} }

View File

@ -6,11 +6,12 @@ uniform vec4 LightDirection;
varying vec2 texCoord; varying vec2 texCoord;
varying vec3 fragNormal; varying vec3 fragNormal;
varying vec3 fragColor;
void main() { void main() {
vec4 color = texture2D(Texture, texCoord).rgba; vec4 color = texture2D(Texture, texCoord).rgba;
float intensity = dot(normalize(LightDirection.xyz), -normalize(fragNormal)); float intensity = dot(normalize(LightDirection.xyz), -normalize(fragNormal));
gl_FragColor = vec4(color.rgb * intensity*0.5 + vec3(0.5, 0.5, 0.5), color.a * Transparency); gl_FragColor = vec4(color.rgb * fragColor.rgb * intensity + vec3(0.5, 0.5, 0.5), color.a * Transparency);
//gl_FragColor = vec4((fragNormal.rgb + vec3(1.0, 1.0, 1.0))*0.5, 1.0); //gl_FragColor = vec4((fragNormal.rgb + vec3(1.0, 1.0, 1.0))*0.5, 1.0);
} }

View File

@ -1,14 +1,17 @@
attribute vec3 vPosition; attribute vec3 vPosition;
attribute vec3 Normal; attribute vec3 Normal;
attribute vec2 vTexCoord; attribute vec2 vTexCoord;
attribute vec3 vColor;
uniform mat4 ProjectionMatrix; uniform mat4 ProjectionMatrix;
varying vec2 texCoord; varying vec2 texCoord;
varying vec3 fragNormal; varying vec3 fragNormal;
varying vec3 fragColor;
void main() { void main() {
gl_Position = ProjectionMatrix * vec4(vPosition.xyz, 1.0); gl_Position = ProjectionMatrix * vec4(vPosition.xyz, 1.0);
texCoord = vTexCoord; texCoord = vTexCoord;
fragNormal = Normal; fragNormal = Normal;
fragColor = vColor;
} }

View File

@ -169,14 +169,12 @@ void TMyApplication::InnerInit()
size_t const threadsCount = 3; size_t const threadsCount = 3;
size_t const edgesCount = 6; size_t const edgesCount = 6;
float const angle = pi / 6; float const angle = pi / 6;
size_t const iterationsCount = 60;
Vector3f up(0, 1, 0); up.normalize(); Vector3f up(0, 1, 0); up.normalize();
size_t const step = 5; size_t const step = 5;
auto g = [this, findPlaneBasis, R, r, threadsCount, edgesCount, up, angle, step] (Vector3f start, Vector3f end) { auto g = [this, findPlaneBasis, R, r, threadsCount, edgesCount, up, angle, step] (Vector3f start, Vector3f end, const Vector3f &color) {
size_t iterationsCount = (end - start).norm() / step;
Vector3f direction = (end - start).normalized(); Vector3f direction = (end - start).normalized();
start = start + (r + R) * direction;
end = end - (r + R) * direction; end = end - (r + R) * direction;
size_t iterationsCount = (end - start).norm() / step;
auto e = findPlaneBasis(up); auto e = findPlaneBasis(up);
std::vector<Vector3f> threadCenters; std::vector<Vector3f> threadCenters;
@ -264,7 +262,6 @@ void TMyApplication::InnerInit()
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + vk); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + vk);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + vk1); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + vk1);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + nvk); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + nvk);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + vk1); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + vk1);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + nvk1); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + nvk1);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + nvk); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_POSITION_ATTRIB].push_back(start + nvk);
@ -272,7 +269,6 @@ void TMyApplication::InnerInit()
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((vk - threadCenter)); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((vk - threadCenter));
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((vk1 - threadCenter)); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((vk1 - threadCenter));
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((nvk - newThreadCenter)); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((nvk - newThreadCenter));
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((vk1 - threadCenter)); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((vk1 - threadCenter));
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((nvk1 - newThreadCenter)); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((nvk1 - newThreadCenter));
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((nvk - newThreadCenter)); fabricRender.second.Data.Vec3CoordArr[CONST_STRING_NORMAL_ATTRIB].push_back((nvk - newThreadCenter));
@ -280,10 +276,17 @@ void TMyApplication::InnerInit()
fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.1, 0.1)); fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.1, 0.1));
fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.2, 0.1)); fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.2, 0.1));
fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.1, 0.2)); fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.1, 0.2));
fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.2, 0.1)); fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.2, 0.1));
fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.2, 0.2)); fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.2, 0.2));
fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.1, 0.2)); fabricRender.second.Data.Vec2CoordArr[CONST_STRING_TEXCOORD_ATTRIB].push_back(Vector2f(0.1, 0.2));
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(color);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(color);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(color);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(color);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(color);
fabricRender.second.Data.Vec3CoordArr[CONST_STRING_COLOR_ATTRIB].push_back(color);
} }
} }
@ -299,6 +302,7 @@ void TMyApplication::InnerInit()
for(auto line: root.get_child("lines")) { for(auto line: root.get_child("lines")) {
std::vector<int> start; std::vector<int> start;
std::vector<int> end; std::vector<int> end;
std::vector<float> color;
for(auto value: line.second.get_child("start")) { for(auto value: line.second.get_child("start")) {
start.push_back(value.second.get_value<int>()); start.push_back(value.second.get_value<int>());
@ -308,7 +312,11 @@ void TMyApplication::InnerInit()
end.push_back(value.second.get_value<int>()); end.push_back(value.second.get_value<int>());
} }
g(Vector3f(start[0], 0, start[1]), Vector3f(end[0], 0, end[1])); for (auto value : line.second.get_child("color")) {
color.push_back(value.second.get_value<float>());
}
g(Vector3f(start[0], 0, start[1]), Vector3f(end[0], 0, end[1]), Vector3f(color[0], color[1], color[2]));
} }
} }