annotate dmscene.h @ 107:2b30217a3c39 default tip

Fix verbose build echos.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 29 Feb 2024 21:48:47 +0200
parents 9ee0edff3940
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 //
22
03b86b9c2f29 Add copyright blurbs and licenses.
Matti Hamalainen <ccr@tnsp.org>
parents: 21
diff changeset
2 // GLDragon - OpenGL PLY model viewer / simple benchmark
71
1ed7f9d85342 Fix file description.
Matti Hamalainen <ccr@tnsp.org>
parents: 70
diff changeset
3 // -- Scene file handling
22
03b86b9c2f29 Add copyright blurbs and licenses.
Matti Hamalainen <ccr@tnsp.org>
parents: 21
diff changeset
4 // Programmed and designed by Matti 'ccr' Hämäläinen <ccr@tnsp.org>
76
9ee0edff3940 Bump copyright years.
Matti Hamalainen <ccr@tnsp.org>
parents: 71
diff changeset
5 // (C) Copyright 2019-2020 Tecnic Software productions (TNSP)
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 //
22
03b86b9c2f29 Add copyright blurbs and licenses.
Matti Hamalainen <ccr@tnsp.org>
parents: 21
diff changeset
7 // See file "COPYING" for license information.
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 //
61
7b138613e2fc Rename dmmodel.* to dmscene.*
Matti Hamalainen <ccr@tnsp.org>
parents: 56
diff changeset
9 #ifndef DMSCENE_H
7b138613e2fc Rename dmmodel.* to dmscene.*
Matti Hamalainen <ccr@tnsp.org>
parents: 56
diff changeset
10 #define DMSCENE_H 1
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12 #include "dmutil.h"
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 #include <cstdint>
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15
70
03aa729a9e90 Refactor PLY file parsing from dmscene.* to dmply.* and some helper functions into dmutil.h
Matti Hamalainen <ccr@tnsp.org>
parents: 68
diff changeset
16 /* Structures and classes
03aa729a9e90 Refactor PLY file parsing from dmscene.* to dmply.* and some helper functions into dmutil.h
Matti Hamalainen <ccr@tnsp.org>
parents: 68
diff changeset
17 */
21
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
18 struct DMVector3
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 {
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 float x, y, z;
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21 };
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23
25
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
24 union DMVector4
21
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
25 {
25
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
26 struct { float x, y, z, w; } p;
48
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
27 struct { float r, g, b, a; } c;
25
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
28 float values[4];
21
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
29 };
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
30
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
31
48
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
32 struct DMMaterial
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
33 {
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
34 DMVector4 ambient, diffuse, specular;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
35 int shininess;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
36 };
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
37
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
38
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 struct DMModel
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
40 {
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
41 int nvertices, nfaces;
21
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
42 std::vector<DMVector3> vertices, normals;
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 std::vector<unsigned int> faces;
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44
48
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
45 DMMaterial material;
21
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
46 DMVector3 translate, scale, rotate;
36
d640f2a34031 Only scale/translate/rotate the model if those attributes have been set in the scenefile.
Matti Hamalainen <ccr@tnsp.org>
parents: 32
diff changeset
47 bool translateSet, scaleSet, rotateSet;
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48
68
701bef61dcf1 Remove OpenGL fs/vs shader ids from DMModel, as they are not needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 61
diff changeset
49 unsigned int id_prog;
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50
21
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
51 std::string
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
52 modelFile,
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
53 fragShaderFile, vertShaderFile,
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
54 fragShaderStr, vertShaderStr;
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
55
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
56 DMModel()
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
57 {
21
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
58 nfaces = nvertices = 0;
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
59
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60 translate.x = translate.y = translate.z = 0;
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61 rotate.x = rotate.y = rotate.z = 0;
36
d640f2a34031 Only scale/translate/rotate the model if those attributes have been set in the scenefile.
Matti Hamalainen <ccr@tnsp.org>
parents: 32
diff changeset
62 scale.x = scale.y = scale.z = 0;
d640f2a34031 Only scale/translate/rotate the model if those attributes have been set in the scenefile.
Matti Hamalainen <ccr@tnsp.org>
parents: 32
diff changeset
63 translateSet = rotateSet = scaleSet = false;
32
1215fdd0a8ab Add support for specifying specular and shininess values per model.
Matti Hamalainen <ccr@tnsp.org>
parents: 25
diff changeset
64
48
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
65 material.diffuse.c.r = material.diffuse.p.z = 0.56471f;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
66 material.diffuse.c.g = 0.5f;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
67 material.diffuse.c.a = 1.0f;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
68
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
69 material.specular.c.r = material.specular.c.g = material.specular.c.b = 0.8f;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
70 material.specular.c.a = 1.0f;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
71
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
72 material.shininess = 96;
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 }
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74 };
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77 struct DMLight
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 {
48
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
79 DMMaterial color;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
80 DMVector4 position, pointAt;
25
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
81
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
82 DMLight()
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
83 {
48
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
84 color.ambient.c.r = color.ambient.c.g = color.ambient.p.z = 0.2f; color.ambient.c.a = 1.0f;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
85 color.diffuse.c.r = color.diffuse.c.g = color.diffuse.p.z = 0.8f; color.diffuse.c.a = 1.0f;
0ae1ff609626 Implement diffuse setting for models in scenefile. Also refactor
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
86 color.specular.c.r = color.specular.c.g = color.specular.p.z = 0.5f; color.specular.c.a = 1.0f;
25
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
87
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
88 position.p.x = 10.0f;
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
89 position.p.y = 10.0f;
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
90 position.p.z = 0.0f;
56
8b335eb444ae Initialize light position.w.
Matti Hamalainen <ccr@tnsp.org>
parents: 48
diff changeset
91 position.p.w = 0.0f;
25
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
92 }
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
93 };
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
95
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
96 struct DMCamera
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97 {
25
2403030a0352 "Finish" implementing multiple lights support in scene files.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
98 DMVector4 position, pointAt;
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99 };
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
100
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
101
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
102 struct DMSimpleScene
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
103 {
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
104 DMCamera camera;
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
105 std::vector<DMLight> lights;
21
1404dfcee7b8 More work on scenefile and model loading support.
Matti Hamalainen <ccr@tnsp.org>
parents: 19
diff changeset
106 std::vector<DMModel> models;
19
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
107
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
108 bool loadInfo(const std::string &filename);
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
109 };
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
110
a329f0216491 Implement PLY file format parsing and extremely simplistic scene setup file format.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
111 #endif