working on readme
|
@ -15,8 +15,9 @@ void main() {
|
||||||
//out_color = vec4(uv_, 0.0, 1.0);
|
//out_color = vec4(uv_, 0.0, 1.0);
|
||||||
out_color = texture(texture_array, vec3(uv_, index));
|
out_color = texture(texture_array, vec3(uv_, index));
|
||||||
|
|
||||||
if (out_color.a < 0.1)
|
// discard disables early depth testing!
|
||||||
discard;
|
//if (out_color.a < 0.1)
|
||||||
|
// discard;
|
||||||
}
|
}
|
||||||
|
|
||||||
")";
|
")";
|
||||||
|
|
|
@ -11,21 +11,13 @@ in vec4 pos_[];
|
||||||
out vec2 uv_;
|
out vec2 uv_;
|
||||||
out float index;
|
out float index;
|
||||||
|
|
||||||
const vec3 vertices[] = {
|
|
||||||
vec3(0.5f, 0.5f, 0.0f),
|
|
||||||
vec3(0.5f, -0.5f, 0.0f),
|
|
||||||
vec3(-0.5f, -0.5f, 0.0f),
|
|
||||||
vec3(-0.5f, 0.5f, 0.0f)
|
|
||||||
};
|
|
||||||
|
|
||||||
uniform mat4 pvm;
|
uniform mat4 pvm;
|
||||||
uniform vec4 up;
|
uniform vec4 up;
|
||||||
uniform vec4 right;
|
uniform vec4 right;
|
||||||
|
|
||||||
void emitTransformed(vec3 pos){
|
void transform(vec3 pos){
|
||||||
// passthough index
|
// passthough index
|
||||||
index = pos_[0].w;
|
index = pos_[0].w;
|
||||||
//gl_Position = pvm * vec4(pos_[0].xyz + vertices[0], 1.0);
|
|
||||||
gl_Position = pvm * vec4(pos, 1.0);
|
gl_Position = pvm * vec4(pos, 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,19 +25,20 @@ void main() {
|
||||||
const float quad_size = 0.5;
|
const float quad_size = 0.5;
|
||||||
vec3 pos = pos_[0].xyz;
|
vec3 pos = pos_[0].xyz;
|
||||||
|
|
||||||
emitTransformed(pos + up.xyz * quad_size + right.xyz * quad_size);
|
// using the up and right vectors to generate the verticies for this particle ensures that the particle always faces the camera
|
||||||
|
transform(pos + up.xyz * quad_size + right.xyz * quad_size);
|
||||||
uv_ = vec2(0, 0);
|
uv_ = vec2(0, 0);
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
|
|
||||||
emitTransformed(pos + up.xyz * quad_size - right.xyz * quad_size);
|
transform(pos + up.xyz * quad_size - right.xyz * quad_size);
|
||||||
uv_ = vec2(0, 1);
|
uv_ = vec2(0, 1);
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
|
|
||||||
emitTransformed(pos - up.xyz * quad_size + right.xyz * quad_size);
|
transform(pos - up.xyz * quad_size + right.xyz * quad_size);
|
||||||
uv_ = vec2(1, 0);
|
uv_ = vec2(1, 0);
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
|
|
||||||
emitTransformed(pos - up.xyz * quad_size - right.xyz * quad_size);
|
transform(pos - up.xyz * quad_size - right.xyz * quad_size);
|
||||||
uv_ = vec2(1, 1);
|
uv_ = vec2(1, 1);
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,12 @@ const float SPEED = 1.0f;
|
||||||
const float SPEED_FACTOR = 25.0f;
|
const float SPEED_FACTOR = 25.0f;
|
||||||
const float BOUNCE_FACTOR = 0.75f;
|
const float BOUNCE_FACTOR = 0.75f;
|
||||||
const float SPREAD = 4.5f;
|
const float SPREAD = 4.5f;
|
||||||
const float particle_lifetime = 120.0f;
|
const float particle_lifetime = 25.0f;
|
||||||
const vec2 p_min = vec2(-50, -50);
|
|
||||||
const vec2 p_max = vec2(50, 50);
|
|
||||||
const vec3 inital_pos = vec3(0.0f, 1.0f, 0.0f);
|
const vec3 inital_pos = vec3(0.0f, 1.0f, 0.0f);
|
||||||
const vec4 inital_dir = vec4(0.0f, 1.0f, 0.0f, 0.0f);
|
const vec4 inital_dir = vec4(0.0f, 1.0f, 0.0f, 0.0f);
|
||||||
|
|
||||||
|
const vec2 p_min = vec2(-50, -50);
|
||||||
|
const vec2 p_max = vec2(50, 50);
|
||||||
const vec4 GRAVITY = vec4(0.0, -9.8, 0.0, 0.0);
|
const vec4 GRAVITY = vec4(0.0, -9.8, 0.0, 0.0);
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,7 +61,7 @@ void main() {
|
||||||
pos += vec4(dir.xyz * SPEED * deltaSeconds, 0.0);
|
pos += vec4(dir.xyz * SPEED * deltaSeconds, 0.0);
|
||||||
dir += vec4(GRAVITY.xyz * deltaSeconds, 0.0);
|
dir += vec4(GRAVITY.xyz * deltaSeconds, 0.0);
|
||||||
|
|
||||||
if (pos.y < 0 && checkBounds(pos.xy)) {
|
if (pos.y < 0 && checkBounds(pos.xz)) {
|
||||||
dir.y = -dir.y * BOUNCE_FACTOR;
|
dir.y = -dir.y * BOUNCE_FACTOR;
|
||||||
pos.y = 0;
|
pos.y = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#include <string>
|
||||||
|
std::string shader_sort = R"("
|
||||||
|
#version 460
|
||||||
|
|
||||||
|
layout (local_size_x = 128, local_size_y = 1, local_size_z = 1) in;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
")";
|
||||||
|
#endif
|
|
@ -12,7 +12,7 @@
|
||||||
#include <blt/math/vectors.h>
|
#include <blt/math/vectors.h>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
const std::string WINDOW_TITLE = "Assignment 3: They said WHAT?!";
|
const std::string WINDOW_TITLE = "Assignment 3: The Power Of Love";
|
||||||
|
|
||||||
static constexpr int TARGET_FPS = 60;
|
static constexpr int TARGET_FPS = 60;
|
||||||
static constexpr float FOV = 90;
|
static constexpr float FOV = 90;
|
||||||
|
|
After Width: | Height: | Size: 909 KiB |
After Width: | Height: | Size: 658 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
\relax
|
||||||
|
\providecommand\hyper@newdestlabel[2]{}
|
||||||
|
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||||
|
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||||
|
\global\let\oldnewlabel\newlabel
|
||||||
|
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||||
|
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||||
|
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||||
|
\let\newlabel\oldnewlabel
|
||||||
|
\fi}
|
||||||
|
\fi}
|
||||||
|
\global\let\hyper@last\relax
|
||||||
|
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||||
|
\providecommand\HyField@AuxAddToFields[1]{}
|
||||||
|
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||||
|
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{2}{chapter.1}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {1.1}Description}{2}{section.1.1}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.1}Extra Features}{2}{subsection.1.1.1}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.2}Missing Features}{2}{subsection.1.1.2}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {1.2}Building}{2}{section.1.2}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2.1}Caveats}{3}{subsection.1.2.1}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2.2}Build Commands}{3}{subsection.1.2.2}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces Linux build commands.}}{3}{figure.1.1}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {1.3}Usage}{3}{section.1.3}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Performance Mode}{4}{chapter.2}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\newlabel{chap:hp}{{2}{4}{Performance Mode}{chapter.2}{}}
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {2.0.1}Design}{4}{subsection.2.0.1}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces }}{5}{figure.2.1}\protected@file@percent }
|
||||||
|
\newlabel{fig:screenshot002}{{2.1}{5}{}{figure.2.1}{}}
|
||||||
|
\gdef \@abspage@last{7}
|
|
@ -0,0 +1,409 @@
|
||||||
|
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Debian) (preloaded format=pdflatex 2023.2.25) 4 APR 2023 22:01
|
||||||
|
entering extended mode
|
||||||
|
restricted \write18 enabled.
|
||||||
|
%&-line parsing enabled.
|
||||||
|
**template_Report.tex
|
||||||
|
(./template_Report.tex
|
||||||
|
LaTeX2e <2022-11-01> patch level 1
|
||||||
|
L3 programming layer <2023-01-16>
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls
|
||||||
|
Document Class: report 2022/07/02 v1.4n Standard LaTeX document class
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
|
||||||
|
File: size10.clo 2022/07/02 v1.4n Standard LaTeX file (size option)
|
||||||
|
)
|
||||||
|
\c@part=\count185
|
||||||
|
\c@chapter=\count186
|
||||||
|
\c@section=\count187
|
||||||
|
\c@subsection=\count188
|
||||||
|
\c@subsubsection=\count189
|
||||||
|
\c@paragraph=\count190
|
||||||
|
\c@subparagraph=\count191
|
||||||
|
\c@figure=\count192
|
||||||
|
\c@table=\count193
|
||||||
|
\abovecaptionskip=\skip48
|
||||||
|
\belowcaptionskip=\skip49
|
||||||
|
\bibindent=\dimen140
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/blindtext/blindtext.sty
|
||||||
|
Package: blindtext 2012/01/06 V2.0 blindtext-Package
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/tools/xspace.sty
|
||||||
|
Package: xspace 2014/10/28 v1.13 Space after command names (DPC,MH)
|
||||||
|
)
|
||||||
|
\c@blindtext=\count194
|
||||||
|
\c@Blindtext=\count195
|
||||||
|
\c@blind@countparstart=\count196
|
||||||
|
\blind@countxx=\count197
|
||||||
|
\blindtext@numBlindtext=\count198
|
||||||
|
\blind@countyy=\count199
|
||||||
|
\c@blindlist=\count266
|
||||||
|
\c@blindlistlevel=\count267
|
||||||
|
\c@blindlist@level=\count268
|
||||||
|
\blind@listitem=\count269
|
||||||
|
\c@blind@listcount=\count270
|
||||||
|
\c@blind@levelcount=\count271
|
||||||
|
\blind@mathformula=\count272
|
||||||
|
\blind@Mathformula=\count273
|
||||||
|
\c@blind@randomcount=\count274
|
||||||
|
\c@blind@randommax=\count275
|
||||||
|
\c@blind@pangramcount=\count276
|
||||||
|
\c@blind@pangrammax=\count277
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/titlepic/titlepic.sty
|
||||||
|
Package: titlepic 2017/03/14 1.2 Package to display a picture on the title page
|
||||||
|
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty
|
||||||
|
Package: titlesec 2021/07/05 v2.14 Sectioning titles
|
||||||
|
\ttl@box=\box51
|
||||||
|
\beforetitleunit=\skip50
|
||||||
|
\aftertitleunit=\skip51
|
||||||
|
\ttl@plus=\dimen141
|
||||||
|
\ttl@minus=\dimen142
|
||||||
|
\ttl@toksa=\toks16
|
||||||
|
\titlewidth=\dimen143
|
||||||
|
\titlewidthlast=\dimen144
|
||||||
|
\titlewidthfirst=\dimen145
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||||
|
Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
|
||||||
|
Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
|
||||||
|
\KV@toks@=\toks17
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
|
||||||
|
Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR)
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
|
||||||
|
Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||||
|
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
|
||||||
|
)
|
||||||
|
Package graphics Info: Driver file: pdftex.def on input line 107.
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||||
|
File: pdftex.def 2022/09/22 v1.2b Graphics/color driver for pdftex
|
||||||
|
))
|
||||||
|
\Gin@req@height=\dimen146
|
||||||
|
\Gin@req@width=\dimen147
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/float/float.sty
|
||||||
|
Package: float 2001/11/08 v1.3d Float enhancements (AL)
|
||||||
|
\c@float@type=\count278
|
||||||
|
\float@exts=\toks18
|
||||||
|
\float@box=\box52
|
||||||
|
\@float@everytoks=\toks19
|
||||||
|
\@floatcapt=\box53
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
|
||||||
|
\lst@mode=\count279
|
||||||
|
\lst@gtempboxa=\box54
|
||||||
|
\lst@token=\toks20
|
||||||
|
\lst@length=\count280
|
||||||
|
\lst@currlwidth=\dimen148
|
||||||
|
\lst@column=\count281
|
||||||
|
\lst@pos=\count282
|
||||||
|
\lst@lostspace=\dimen149
|
||||||
|
\lst@width=\dimen150
|
||||||
|
\lst@newlines=\count283
|
||||||
|
\lst@lineno=\count284
|
||||||
|
\lst@maxwidth=\dimen151
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||||
|
File: lstmisc.sty 2020/03/24 1.8d (Carsten Heinz)
|
||||||
|
\c@lstnumber=\count285
|
||||||
|
\lst@skipnumbers=\count286
|
||||||
|
\lst@framebox=\box55
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
|
||||||
|
File: listings.cfg 2020/03/24 1.8d listings configuration
|
||||||
|
))
|
||||||
|
Package: listings 2020/03/24 1.8d (Carsten Heinz)
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||||
|
Package: hyperref 2022-11-13 v7.00u Hypertext links for LaTeX
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||||
|
Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
|
||||||
|
Package: iftex 2022/02/03 v1.0f TeX engine tests
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
|
||||||
|
Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO
|
||||||
|
)
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||||
|
Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
|
||||||
|
)
|
||||||
|
Package pdftexcmds Info: \pdf@primitive is available.
|
||||||
|
Package pdftexcmds Info: \pdf@ifprimitive is available.
|
||||||
|
Package pdftexcmds Info: \pdfdraftmode found.
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
|
||||||
|
Package: kvsetkeys 2022-10-05 v1.19 Key value parser (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||||
|
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||||
|
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||||
|
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
|
||||||
|
Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||||
|
Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||||
|
Package: nameref 2022-05-17 v2.50 Cross-referencing by name of section
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty
|
||||||
|
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||||
|
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||||
|
Package: kvoptions 2022-06-15 v3.15 Key value format for package options (HO)
|
||||||
|
))
|
||||||
|
\c@section@level=\count287
|
||||||
|
)
|
||||||
|
\@linkdim=\dimen152
|
||||||
|
\Hy@linkcounter=\count288
|
||||||
|
\Hy@pagecounter=\count289
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||||
|
File: pd1enc.def 2022-11-13 v7.00u Hyperref: PDFDocEncoding definition (HO)
|
||||||
|
Now handling font encoding PD1 ...
|
||||||
|
... no UTF-8 mapping file for font encoding PD1
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||||
|
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty
|
||||||
|
Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
|
||||||
|
)
|
||||||
|
\Hy@SavedSpaceFactor=\count290
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def
|
||||||
|
File: puenc.def 2022-11-13 v7.00u Hyperref: PDF Unicode definition (HO)
|
||||||
|
Now handling font encoding PU ...
|
||||||
|
... no UTF-8 mapping file for font encoding PU
|
||||||
|
)
|
||||||
|
Package hyperref Info: Option `colorlinks' set `true' on input line 4045.
|
||||||
|
Package hyperref Info: Hyper figures OFF on input line 4162.
|
||||||
|
Package hyperref Info: Link nesting OFF on input line 4167.
|
||||||
|
Package hyperref Info: Hyper index ON on input line 4170.
|
||||||
|
Package hyperref Info: Plain pages OFF on input line 4177.
|
||||||
|
Package hyperref Info: Backreferencing OFF on input line 4182.
|
||||||
|
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
|
||||||
|
Package hyperref Info: Bookmarks ON on input line 4410.
|
||||||
|
\c@Hy@tempcnt=\count291
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty
|
||||||
|
\Urlmuskip=\muskip16
|
||||||
|
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
|
||||||
|
)
|
||||||
|
LaTeX Info: Redefining \url on input line 4748.
|
||||||
|
\XeTeXLinkMargin=\dimen153
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty
|
||||||
|
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||||
|
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
|
||||||
|
)
|
||||||
|
))
|
||||||
|
\Fld@menulength=\count292
|
||||||
|
\Field@Width=\dimen154
|
||||||
|
\Fld@charsize=\dimen155
|
||||||
|
Package hyperref Info: Hyper figures OFF on input line 6027.
|
||||||
|
Package hyperref Info: Link nesting OFF on input line 6032.
|
||||||
|
Package hyperref Info: Hyper index ON on input line 6035.
|
||||||
|
Package hyperref Info: backreferencing OFF on input line 6042.
|
||||||
|
Package hyperref Info: Link coloring ON on input line 6045.
|
||||||
|
Package hyperref Info: Link coloring with OCG OFF on input line 6052.
|
||||||
|
Package hyperref Info: PDF/A mode OFF on input line 6057.
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty
|
||||||
|
Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi
|
||||||
|
package with kernel methods
|
||||||
|
)
|
||||||
|
\Hy@abspage=\count293
|
||||||
|
\c@Item=\count294
|
||||||
|
\c@Hfootnote=\count295
|
||||||
|
)
|
||||||
|
Package hyperref Info: Driver (autodetected): hpdftex.
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||||
|
File: hpdftex.def 2022-11-13 v7.00u Hyperref driver for pdfTeX
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty
|
||||||
|
Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac
|
||||||
|
kage
|
||||||
|
with kernel methods
|
||||||
|
)
|
||||||
|
\Fld@listcount=\count296
|
||||||
|
\c@bookmark@seq@number=\count297
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||||
|
Package: rerunfilecheck 2022-07-10 v1.10 Rerun checks for auxiliary files (HO)
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||||
|
Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
|
||||||
|
)
|
||||||
|
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
|
||||||
|
85.
|
||||||
|
)
|
||||||
|
\Hy@SectionHShift=\skip52
|
||||||
|
)
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
File: l3backend-pdftex.def 2023-01-16 L3 backend support: PDF output (pdfTeX)
|
||||||
|
\l__color_backend_stack_int=\count298
|
||||||
|
\l__pdf_internal_box=\box56
|
||||||
|
)
|
||||||
|
(./template_Report.aux)
|
||||||
|
\openout1 = `template_Report.aux'.
|
||||||
|
|
||||||
|
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 34.
|
||||||
|
LaTeX Font Info: ... okay on input line 34.
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||||
|
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||||
|
\scratchcounter=\count299
|
||||||
|
\scratchdimen=\dimen156
|
||||||
|
\scratchbox=\box57
|
||||||
|
\nofMPsegments=\count300
|
||||||
|
\nofMParguments=\count301
|
||||||
|
\everyMPshowfont=\toks21
|
||||||
|
\MPscratchCnt=\count302
|
||||||
|
\MPscratchDim=\dimen157
|
||||||
|
\MPnumerator=\count303
|
||||||
|
\makeMPintoPDFobject=\count304
|
||||||
|
\everyMPtoPDFconversion=\toks22
|
||||||
|
) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||||
|
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
|
||||||
|
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
|
||||||
|
85.
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||||
|
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||||
|
e
|
||||||
|
))
|
||||||
|
\c@lstlisting=\count305
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty
|
||||||
|
Package: color 2022/01/06 v1.3d Standard LaTeX Color (DPC)
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||||
|
File: color.cfg 2016/01/02 v1.6 sample color configuration
|
||||||
|
)
|
||||||
|
Package color Info: Driver file: pdftex.def on input line 149.
|
||||||
|
|
||||||
|
(/usr/share/texlive/texmf-dist/tex/latex/graphics/mathcolor.ltx))
|
||||||
|
Package hyperref Info: Link coloring ON on input line 34.
|
||||||
|
|
||||||
|
(./template_Report.out) (./template_Report.out)
|
||||||
|
\@outlinefile=\write3
|
||||||
|
\openout3 = `template_Report.out'.
|
||||||
|
|
||||||
|
LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
|
(Font) <12> on input line 36.
|
||||||
|
LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
|
(Font) <8> on input line 36.
|
||||||
|
LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
|
(Font) <6> on input line 36.
|
||||||
|
<screenshot001.png, id=44, 733.23938pt x 640.64343pt>
|
||||||
|
File: screenshot001.png Graphic file (type png)
|
||||||
|
<use screenshot001.png>
|
||||||
|
Package pdftex.def Info: screenshot001.png used on input line 36.
|
||||||
|
(pdftex.def) Requested size: 345.0pt x 301.43481pt.
|
||||||
|
[1
|
||||||
|
|
||||||
|
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./screenshot001.png>]
|
||||||
|
pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has
|
||||||
|
been already used, duplicate ignored
|
||||||
|
<to be read again>
|
||||||
|
\relax
|
||||||
|
l.39 \end{abstract}
|
||||||
|
[1] (./template_Report.toc
|
||||||
|
LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
|
(Font) <7> on input line 2.
|
||||||
|
LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
|
(Font) <5> on input line 2.
|
||||||
|
)
|
||||||
|
\tf@toc=\write4
|
||||||
|
\openout4 = `template_Report.toc'.
|
||||||
|
|
||||||
|
|
||||||
|
pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has
|
||||||
|
been already used, duplicate ignored
|
||||||
|
<to be read again>
|
||||||
|
\relax
|
||||||
|
l.43 \chapter
|
||||||
|
{Introduction} [1
|
||||||
|
|
||||||
|
]
|
||||||
|
Chapter 1.
|
||||||
|
[2
|
||||||
|
|
||||||
|
] [3]
|
||||||
|
Chapter 2.
|
||||||
|
|
||||||
|
Package hyperref Warning: Difference (2) between bookmark levels is greater
|
||||||
|
(hyperref) than one, level fixed on input line 75.
|
||||||
|
|
||||||
|
<screenshot002.png, id=92, 1275.26437pt x 776.14969pt>
|
||||||
|
File: screenshot002.png Graphic file (type png)
|
||||||
|
<use screenshot002.png>
|
||||||
|
Package pdftex.def Info: screenshot002.png used on input line 79.
|
||||||
|
(pdftex.def) Requested size: 517.5pt x 314.95474pt.
|
||||||
|
[4
|
||||||
|
|
||||||
|
] [5 <./screenshot002.png (PNG copy)>] (./template_Report.aux)
|
||||||
|
Package rerunfilecheck Info: File `template_Report.out' has not changed.
|
||||||
|
(rerunfilecheck) Checksum: CB123BBB1A862490A8F40DBEA1059868;1109.
|
||||||
|
)
|
||||||
|
Here is how much of TeX's memory you used:
|
||||||
|
10472 strings out of 477975
|
||||||
|
162768 string characters out of 5839281
|
||||||
|
1856330 words of memory out of 5000000
|
||||||
|
30472 multiletter control sequences out of 15000+600000
|
||||||
|
517483 words of font info for 49 fonts, out of 8000000 for 9000
|
||||||
|
59 hyphenation exceptions out of 8191
|
||||||
|
75i,6n,76p,530b,1101s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||||
|
</home/brett/.texlive2022/texmf-var/fonts/pk/ljfour/jknappen/ec/tcrm1000.600
|
||||||
|
pk></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></u
|
||||||
|
sr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/sha
|
||||||
|
re/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texl
|
||||||
|
ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/tex
|
||||||
|
mf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb>
|
||||||
|
Output written on template_Report.pdf (7 pages, 1742942 bytes).
|
||||||
|
PDF statistics:
|
||||||
|
139 PDF objects out of 1000 (max. 8388607)
|
||||||
|
113 compressed objects within 2 object streams
|
||||||
|
24 named destinations out of 1000 (max. 500000)
|
||||||
|
91 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
\BOOKMARK [0][-]{chapter.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
|
||||||
|
\BOOKMARK [1][-]{section.1.1}{\376\377\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{chapter.1}% 2
|
||||||
|
\BOOKMARK [2][-]{subsection.1.1.1}{\376\377\000E\000x\000t\000r\000a\000\040\000F\000e\000a\000t\000u\000r\000e\000s}{section.1.1}% 3
|
||||||
|
\BOOKMARK [2][-]{subsection.1.1.2}{\376\377\000M\000i\000s\000s\000i\000n\000g\000\040\000F\000e\000a\000t\000u\000r\000e\000s}{section.1.1}% 4
|
||||||
|
\BOOKMARK [1][-]{section.1.2}{\376\377\000B\000u\000i\000l\000d\000i\000n\000g}{chapter.1}% 5
|
||||||
|
\BOOKMARK [2][-]{subsection.1.2.1}{\376\377\000C\000a\000v\000e\000a\000t\000s}{section.1.2}% 6
|
||||||
|
\BOOKMARK [2][-]{subsection.1.2.2}{\376\377\000B\000u\000i\000l\000d\000\040\000C\000o\000m\000m\000a\000n\000d\000s}{section.1.2}% 7
|
||||||
|
\BOOKMARK [1][-]{section.1.3}{\376\377\000U\000s\000a\000g\000e}{chapter.1}% 8
|
||||||
|
\BOOKMARK [0][-]{chapter.2}{\376\377\000P\000e\000r\000f\000o\000r\000m\000a\000n\000c\000e\000\040\000M\000o\000d\000e}{}% 9
|
||||||
|
\BOOKMARK [1][-]{subsection.2.0.1}{\376\377\000D\000e\000s\000i\000g\000n}{chapter.2}% 10
|
|
@ -0,0 +1,85 @@
|
||||||
|
\documentclass[]{report}
|
||||||
|
|
||||||
|
|
||||||
|
\usepackage{blindtext}
|
||||||
|
\usepackage{titlepic}
|
||||||
|
\usepackage{titlesec}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{float}
|
||||||
|
\usepackage{titlesec}
|
||||||
|
\usepackage{listings}
|
||||||
|
\usepackage[%
|
||||||
|
colorlinks=true,
|
||||||
|
pdfborder={0 0 0},
|
||||||
|
linkcolor=red
|
||||||
|
]{hyperref}
|
||||||
|
|
||||||
|
\makeatletter
|
||||||
|
\renewcommand{\@makechapterhead}[1]{%
|
||||||
|
\vspace*{50 pt}%
|
||||||
|
{\setlength{\parindent}{0pt} \raggedright \normalfont
|
||||||
|
\bfseries\Huge
|
||||||
|
|
||||||
|
#1\par\nobreak\vspace{40 pt}}}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
% Title Page
|
||||||
|
\title{COSC 3P98 Assignment 3}
|
||||||
|
\author{Brett Terpstra - 6920201 - bt19ex@brocku.ca}
|
||||||
|
\titlepic{\includegraphics[width=\textwidth]{screenshot001.png}}
|
||||||
|
\renewcommand*\contentsname{Table Of Contents}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\begin{abstract}
|
||||||
|
Particle systems are the cornerstone of all modern game engines as they allow effects such as smoke which are otherwise impossible with static meshes. Ergo a good particle system should be flexible while maintaining stable performance. This document serves as an informal report on the design and implementaion of two particle systems; a basic but flexible engine and a high performance extendable "modern" GPU powered particle system.
|
||||||
|
\end{abstract}
|
||||||
|
|
||||||
|
\tableofcontents
|
||||||
|
|
||||||
|
\chapter{Introduction}
|
||||||
|
\section{Description}
|
||||||
|
Over the course of working on this assignment I began to wonder how far I could push my hardware and \autoref{chap:hp} "Performance Mode" will go furher into this. As for the main assignment requirements, they are met simply by running the CMake project. On my hardware the simple particle fountain can reach 30k particles and features sorted transparency.
|
||||||
|
\subsection{Extra Features}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Ordered Alpha Blending
|
||||||
|
\item "Spray" Mode (12)
|
||||||
|
\item Textured Particles/Plane/Cube (16)
|
||||||
|
\item Particles with Different Textures (18)
|
||||||
|
\item Extra Feature - "Performance Mode" (23)
|
||||||
|
\end{itemize}
|
||||||
|
\subsection{Missing Features}
|
||||||
|
Random spin mode was left out intentionally for two reasons. One, I specifically designed the particle strucutre to fit in 32 bytes, half the width of a cache line. Two, the potential marks was not worth disturbing the particle data structure and further altering the particle system. There is likely little benefit to ensuring the particles fit nicely inside a cache line as most of the CPU time is spent on OpenGL API calls. See \autoref{chap:hp} "Performance Mode" for more information.
|
||||||
|
\section{Building}
|
||||||
|
As of writing this report, I have yet to build and test on Windows. The Visual Studio project will build without issues, however, since this assignment was primarily designed and tested on Debain 12 "Bookworm" (Linux 6.1.0-6-amd64) using AMD/Intel hardware (Mesa 22.3.6), I reccomend using CMake.
|
||||||
|
\subsection{Caveats}
|
||||||
|
The assignment makes use of a non-standard OpenGL extention during texture loading. "GL\_TEXTURE\_MAX\_ANISOTROPY\_EXT" should work on all modern Intel/AMD/Nvidia hardware, if it doesn't work on your hardware consider removing the line from texture.h and high\_perf.cpp
|
||||||
|
\subsection{Build Commands}
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\begin{lstlisting}
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release ../
|
||||||
|
make -j 16
|
||||||
|
./assign3
|
||||||
|
\end{lstlisting}
|
||||||
|
\caption{Linux build commands.}
|
||||||
|
\end{figure}
|
||||||
|
\section{Usage}
|
||||||
|
Keybindings and usage instructions are printed at program startup.
|
||||||
|
|
||||||
|
\chapter{Performance Mode}\label{chap:hp}
|
||||||
|
\subsection{Design}
|
||||||
|
The high performance mode is the result of a weekend hack-a-ton where I wanted to see how easy it would be to implement a million particle+ renderer. The rendering engine itself can handle around 20 million particles at about 60fps (\autoref{fig:screenshot002}).
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centerline{\includegraphics[width=1.5\linewidth]{screenshot002}}
|
||||||
|
\caption[]{20 million particles distributed in a 50x25x50 cube with load monitors}
|
||||||
|
\label{fig:screenshot002}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
|
@ -0,0 +1,10 @@
|
||||||
|
\contentsline {chapter}{\numberline {1}Introduction}{2}{chapter.1}%
|
||||||
|
\contentsline {section}{\numberline {1.1}Description}{2}{section.1.1}%
|
||||||
|
\contentsline {subsection}{\numberline {1.1.1}Extra Features}{2}{subsection.1.1.1}%
|
||||||
|
\contentsline {subsection}{\numberline {1.1.2}Missing Features}{2}{subsection.1.1.2}%
|
||||||
|
\contentsline {section}{\numberline {1.2}Building}{2}{section.1.2}%
|
||||||
|
\contentsline {subsection}{\numberline {1.2.1}Caveats}{3}{subsection.1.2.1}%
|
||||||
|
\contentsline {subsection}{\numberline {1.2.2}Build Commands}{3}{subsection.1.2.2}%
|
||||||
|
\contentsline {section}{\numberline {1.3}Usage}{3}{section.1.3}%
|
||||||
|
\contentsline {chapter}{\numberline {2}Performance Mode}{4}{chapter.2}%
|
||||||
|
\contentsline {subsection}{\numberline {2.0.1}Design}{4}{subsection.2.0.1}%
|
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.9 KiB |