diff --git a/include/shaders/fragment.frag b/include/shaders/fragment.frag index 95abc1b..3c47ede 100644 --- a/include/shaders/fragment.frag +++ b/include/shaders/fragment.frag @@ -15,8 +15,9 @@ void main() { //out_color = vec4(uv_, 0.0, 1.0); out_color = texture(texture_array, vec3(uv_, index)); - if (out_color.a < 0.1) - discard; + // discard disables early depth testing! + //if (out_color.a < 0.1) + // discard; } ")"; diff --git a/include/shaders/geometry.geom b/include/shaders/geometry.geom index 1c24f6e..eee1f33 100644 --- a/include/shaders/geometry.geom +++ b/include/shaders/geometry.geom @@ -11,21 +11,13 @@ in vec4 pos_[]; out vec2 uv_; 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 vec4 up; uniform vec4 right; -void emitTransformed(vec3 pos){ +void transform(vec3 pos){ // passthough index index = pos_[0].w; - //gl_Position = pvm * vec4(pos_[0].xyz + vertices[0], 1.0); gl_Position = pvm * vec4(pos, 1.0); } @@ -33,19 +25,20 @@ void main() { const float quad_size = 0.5; 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); 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); 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); 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); EmitVertex(); diff --git a/include/shaders/physics.comp b/include/shaders/physics.comp index 9471338..7736eff 100644 --- a/include/shaders/physics.comp +++ b/include/shaders/physics.comp @@ -17,11 +17,12 @@ const float SPEED = 1.0f; const float SPEED_FACTOR = 25.0f; const float BOUNCE_FACTOR = 0.75f; const float SPREAD = 4.5f; -const float particle_lifetime = 120.0f; -const vec2 p_min = vec2(-50, -50); -const vec2 p_max = vec2(50, 50); +const float particle_lifetime = 25.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 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); @@ -60,7 +61,7 @@ void main() { pos += vec4(dir.xyz * SPEED * 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; pos.y = 0; } diff --git a/include/shaders/sort.comp.glsl b/include/shaders/sort.comp.glsl new file mode 100644 index 0000000..63d2dbf --- /dev/null +++ b/include/shaders/sort.comp.glsl @@ -0,0 +1,13 @@ +#ifdef __cplusplus +#include +std::string shader_sort = R"(" +#version 460 + +layout (local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +void main() { + +} + +")"; +#endif \ No newline at end of file diff --git a/include/util.h b/include/util.h index bb2faa9..a323dee 100644 --- a/include/util.h +++ b/include/util.h @@ -12,7 +12,7 @@ #include #include -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 float FOV = 90; diff --git a/readme/screenshot001.png b/readme/screenshot001.png new file mode 100644 index 0000000..9a14d55 Binary files /dev/null and b/readme/screenshot001.png differ diff --git a/readme/screenshot002.png b/readme/screenshot002.png new file mode 100644 index 0000000..33c75b6 Binary files /dev/null and b/readme/screenshot002.png differ diff --git a/readme/template_Report.aux b/readme/template_Report.aux new file mode 100644 index 0000000..df8ce1e --- /dev/null +++ b/readme/template_Report.aux @@ -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} diff --git a/readme/template_Report.log b/readme/template_Report.log new file mode 100644 index 0000000..03a48c0 --- /dev/null +++ b/readme/template_Report.log @@ -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. + +File: screenshot001.png Graphic file (type 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 + + \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 + + \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. + + +File: screenshot002.png Graphic file (type 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 + +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) + diff --git a/readme/template_Report.out b/readme/template_Report.out new file mode 100644 index 0000000..a390f67 --- /dev/null +++ b/readme/template_Report.out @@ -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 diff --git a/readme/template_Report.pdf b/readme/template_Report.pdf new file mode 100644 index 0000000..a7258a1 Binary files /dev/null and b/readme/template_Report.pdf differ diff --git a/readme/template_Report.synctex.gz b/readme/template_Report.synctex.gz new file mode 100644 index 0000000..af8394d Binary files /dev/null and b/readme/template_Report.synctex.gz differ diff --git a/readme/template_Report.tex b/readme/template_Report.tex new file mode 100644 index 0000000..b435e48 --- /dev/null +++ b/readme/template_Report.tex @@ -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} diff --git a/readme/template_Report.toc b/readme/template_Report.toc new file mode 100644 index 0000000..5eae013 --- /dev/null +++ b/readme/template_Report.toc @@ -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}% diff --git a/resources/kenny_free_particles/circle_01.png b/resources/kenny_free_particles/circle_01.png new file mode 100644 index 0000000..adabdd9 Binary files /dev/null and b/resources/kenny_free_particles/circle_01.png differ diff --git a/resources/kenny_free_particles/circle_02.png b/resources/kenny_free_particles/circle_02.png new file mode 100644 index 0000000..a4c3140 Binary files /dev/null and b/resources/kenny_free_particles/circle_02.png differ diff --git a/resources/kenny_free_particles/circle_03.png b/resources/kenny_free_particles/circle_03.png new file mode 100644 index 0000000..eb771ec Binary files /dev/null and b/resources/kenny_free_particles/circle_03.png differ diff --git a/resources/kenny_free_particles/circle_04.png b/resources/kenny_free_particles/circle_04.png new file mode 100644 index 0000000..3982b03 Binary files /dev/null and b/resources/kenny_free_particles/circle_04.png differ diff --git a/resources/kenny_free_particles/circle_05.png b/resources/kenny_free_particles/circle_05.png new file mode 100644 index 0000000..8de3f69 Binary files /dev/null and b/resources/kenny_free_particles/circle_05.png differ diff --git a/resources/kenny_free_particles/dirt_01.png b/resources/kenny_free_particles/dirt_01.png new file mode 100644 index 0000000..63f8fd5 Binary files /dev/null and b/resources/kenny_free_particles/dirt_01.png differ diff --git a/resources/kenny_free_particles/dirt_02.png b/resources/kenny_free_particles/dirt_02.png new file mode 100644 index 0000000..165015d Binary files /dev/null and b/resources/kenny_free_particles/dirt_02.png differ diff --git a/resources/kenny_free_particles/dirt_03.png b/resources/kenny_free_particles/dirt_03.png new file mode 100644 index 0000000..27e3056 Binary files /dev/null and b/resources/kenny_free_particles/dirt_03.png differ diff --git a/resources/kenny_free_particles/fire_01.png b/resources/kenny_free_particles/fire_01.png new file mode 100644 index 0000000..a83b6db Binary files /dev/null and b/resources/kenny_free_particles/fire_01.png differ diff --git a/resources/kenny_free_particles/fire_02.png b/resources/kenny_free_particles/fire_02.png new file mode 100644 index 0000000..8db26fe Binary files /dev/null and b/resources/kenny_free_particles/fire_02.png differ diff --git a/resources/kenny_free_particles/flame_01.png b/resources/kenny_free_particles/flame_01.png new file mode 100644 index 0000000..6ad670b Binary files /dev/null and b/resources/kenny_free_particles/flame_01.png differ diff --git a/resources/kenny_free_particles/flame_02.png b/resources/kenny_free_particles/flame_02.png new file mode 100644 index 0000000..45046a9 Binary files /dev/null and b/resources/kenny_free_particles/flame_02.png differ diff --git a/resources/kenny_free_particles/flame_03.png b/resources/kenny_free_particles/flame_03.png new file mode 100644 index 0000000..e603027 Binary files /dev/null and b/resources/kenny_free_particles/flame_03.png differ diff --git a/resources/kenny_free_particles/flame_04.png b/resources/kenny_free_particles/flame_04.png new file mode 100644 index 0000000..ac09937 Binary files /dev/null and b/resources/kenny_free_particles/flame_04.png differ diff --git a/resources/kenny_free_particles/flame_05.png b/resources/kenny_free_particles/flame_05.png new file mode 100644 index 0000000..e221498 Binary files /dev/null and b/resources/kenny_free_particles/flame_05.png differ diff --git a/resources/kenny_free_particles/flame_06.png b/resources/kenny_free_particles/flame_06.png new file mode 100644 index 0000000..f23303b Binary files /dev/null and b/resources/kenny_free_particles/flame_06.png differ diff --git a/resources/kenny_free_particles/flare_01.png b/resources/kenny_free_particles/flare_01.png new file mode 100644 index 0000000..fb452a1 Binary files /dev/null and b/resources/kenny_free_particles/flare_01.png differ diff --git a/resources/kenny_free_particles/light_01.png b/resources/kenny_free_particles/light_01.png new file mode 100644 index 0000000..71f8f0f Binary files /dev/null and b/resources/kenny_free_particles/light_01.png differ diff --git a/resources/kenny_free_particles/light_02.png b/resources/kenny_free_particles/light_02.png new file mode 100644 index 0000000..88b22c6 Binary files /dev/null and b/resources/kenny_free_particles/light_02.png differ diff --git a/resources/kenny_free_particles/light_03.png b/resources/kenny_free_particles/light_03.png new file mode 100644 index 0000000..2ca26ca Binary files /dev/null and b/resources/kenny_free_particles/light_03.png differ diff --git a/resources/kenny_free_particles/magic_01.png b/resources/kenny_free_particles/magic_01.png new file mode 100644 index 0000000..3c69391 Binary files /dev/null and b/resources/kenny_free_particles/magic_01.png differ diff --git a/resources/kenny_free_particles/magic_02.png b/resources/kenny_free_particles/magic_02.png new file mode 100644 index 0000000..a6edb7f Binary files /dev/null and b/resources/kenny_free_particles/magic_02.png differ diff --git a/resources/kenny_free_particles/magic_03.png b/resources/kenny_free_particles/magic_03.png new file mode 100644 index 0000000..65f69d6 Binary files /dev/null and b/resources/kenny_free_particles/magic_03.png differ diff --git a/resources/kenny_free_particles/magic_04.png b/resources/kenny_free_particles/magic_04.png new file mode 100644 index 0000000..3c5092c Binary files /dev/null and b/resources/kenny_free_particles/magic_04.png differ diff --git a/resources/kenny_free_particles/magic_05.png b/resources/kenny_free_particles/magic_05.png new file mode 100644 index 0000000..a46b215 Binary files /dev/null and b/resources/kenny_free_particles/magic_05.png differ diff --git a/resources/kenny_free_particles/muzzle_01.png b/resources/kenny_free_particles/muzzle_01.png new file mode 100644 index 0000000..27a2f4c Binary files /dev/null and b/resources/kenny_free_particles/muzzle_01.png differ diff --git a/resources/kenny_free_particles/muzzle_02.png b/resources/kenny_free_particles/muzzle_02.png new file mode 100644 index 0000000..cfd2a7c Binary files /dev/null and b/resources/kenny_free_particles/muzzle_02.png differ diff --git a/resources/kenny_free_particles/muzzle_03.png b/resources/kenny_free_particles/muzzle_03.png new file mode 100644 index 0000000..8ee4019 Binary files /dev/null and b/resources/kenny_free_particles/muzzle_03.png differ diff --git a/resources/kenny_free_particles/muzzle_04.png b/resources/kenny_free_particles/muzzle_04.png new file mode 100644 index 0000000..ee4f0e7 Binary files /dev/null and b/resources/kenny_free_particles/muzzle_04.png differ diff --git a/resources/kenny_free_particles/muzzle_05.png b/resources/kenny_free_particles/muzzle_05.png new file mode 100644 index 0000000..93be2c7 Binary files /dev/null and b/resources/kenny_free_particles/muzzle_05.png differ diff --git a/resources/kenny_free_particles/scorch_01.png b/resources/kenny_free_particles/scorch_01.png new file mode 100644 index 0000000..b6af791 Binary files /dev/null and b/resources/kenny_free_particles/scorch_01.png differ diff --git a/resources/kenny_free_particles/scorch_02.png b/resources/kenny_free_particles/scorch_02.png new file mode 100644 index 0000000..942f4c2 Binary files /dev/null and b/resources/kenny_free_particles/scorch_02.png differ diff --git a/resources/kenny_free_particles/scorch_03.png b/resources/kenny_free_particles/scorch_03.png new file mode 100644 index 0000000..48f13aa Binary files /dev/null and b/resources/kenny_free_particles/scorch_03.png differ diff --git a/resources/kenny_free_particles/scratch_01.png b/resources/kenny_free_particles/scratch_01.png new file mode 100644 index 0000000..9f0854b Binary files /dev/null and b/resources/kenny_free_particles/scratch_01.png differ diff --git a/resources/kenny_free_particles/slash_01.png b/resources/kenny_free_particles/slash_01.png new file mode 100644 index 0000000..c04fa2d Binary files /dev/null and b/resources/kenny_free_particles/slash_01.png differ diff --git a/resources/kenny_free_particles/slash_02.png b/resources/kenny_free_particles/slash_02.png new file mode 100644 index 0000000..59ae0d4 Binary files /dev/null and b/resources/kenny_free_particles/slash_02.png differ diff --git a/resources/kenny_free_particles/slash_03.png b/resources/kenny_free_particles/slash_03.png new file mode 100644 index 0000000..9241004 Binary files /dev/null and b/resources/kenny_free_particles/slash_03.png differ diff --git a/resources/kenny_free_particles/slash_04.png b/resources/kenny_free_particles/slash_04.png new file mode 100644 index 0000000..ee05daa Binary files /dev/null and b/resources/kenny_free_particles/slash_04.png differ diff --git a/resources/kenny_free_particles/smoke_01.png b/resources/kenny_free_particles/smoke_01.png new file mode 100644 index 0000000..1cd418e Binary files /dev/null and b/resources/kenny_free_particles/smoke_01.png differ diff --git a/resources/kenny_free_particles/smoke_02.png b/resources/kenny_free_particles/smoke_02.png new file mode 100644 index 0000000..d866368 Binary files /dev/null and b/resources/kenny_free_particles/smoke_02.png differ diff --git a/resources/kenny_free_particles/smoke_03.png b/resources/kenny_free_particles/smoke_03.png new file mode 100644 index 0000000..909717a Binary files /dev/null and b/resources/kenny_free_particles/smoke_03.png differ diff --git a/resources/kenny_free_particles/smoke_04.png b/resources/kenny_free_particles/smoke_04.png new file mode 100644 index 0000000..74a2695 Binary files /dev/null and b/resources/kenny_free_particles/smoke_04.png differ diff --git a/resources/kenny_free_particles/smoke_05.png b/resources/kenny_free_particles/smoke_05.png new file mode 100644 index 0000000..0ac46dc Binary files /dev/null and b/resources/kenny_free_particles/smoke_05.png differ diff --git a/resources/kenny_free_particles/smoke_06.png b/resources/kenny_free_particles/smoke_06.png new file mode 100644 index 0000000..300c5fa Binary files /dev/null and b/resources/kenny_free_particles/smoke_06.png differ diff --git a/resources/kenny_free_particles/smoke_07.png b/resources/kenny_free_particles/smoke_07.png new file mode 100644 index 0000000..fb78c0f Binary files /dev/null and b/resources/kenny_free_particles/smoke_07.png differ diff --git a/resources/kenny_free_particles/smoke_08.png b/resources/kenny_free_particles/smoke_08.png new file mode 100644 index 0000000..feec49e Binary files /dev/null and b/resources/kenny_free_particles/smoke_08.png differ diff --git a/resources/kenny_free_particles/smoke_09.png b/resources/kenny_free_particles/smoke_09.png new file mode 100644 index 0000000..21178df Binary files /dev/null and b/resources/kenny_free_particles/smoke_09.png differ diff --git a/resources/kenny_free_particles/smoke_10.png b/resources/kenny_free_particles/smoke_10.png new file mode 100644 index 0000000..8f8effe Binary files /dev/null and b/resources/kenny_free_particles/smoke_10.png differ diff --git a/resources/kenny_free_particles/spark_01.png b/resources/kenny_free_particles/spark_01.png new file mode 100644 index 0000000..4b51c09 Binary files /dev/null and b/resources/kenny_free_particles/spark_01.png differ diff --git a/resources/kenny_free_particles/spark_02.png b/resources/kenny_free_particles/spark_02.png new file mode 100644 index 0000000..4116527 Binary files /dev/null and b/resources/kenny_free_particles/spark_02.png differ diff --git a/resources/kenny_free_particles/spark_03.png b/resources/kenny_free_particles/spark_03.png new file mode 100644 index 0000000..6abfcb0 Binary files /dev/null and b/resources/kenny_free_particles/spark_03.png differ diff --git a/resources/kenny_free_particles/spark_04.png b/resources/kenny_free_particles/spark_04.png new file mode 100644 index 0000000..98d0f0a Binary files /dev/null and b/resources/kenny_free_particles/spark_04.png differ diff --git a/resources/kenny_free_particles/spark_05.png b/resources/kenny_free_particles/spark_05.png new file mode 100644 index 0000000..fae3ca7 Binary files /dev/null and b/resources/kenny_free_particles/spark_05.png differ diff --git a/resources/kenny_free_particles/spark_06.png b/resources/kenny_free_particles/spark_06.png new file mode 100644 index 0000000..217d40a Binary files /dev/null and b/resources/kenny_free_particles/spark_06.png differ diff --git a/resources/kenny_free_particles/spark_07.png b/resources/kenny_free_particles/spark_07.png new file mode 100644 index 0000000..70fbfae Binary files /dev/null and b/resources/kenny_free_particles/spark_07.png differ diff --git a/resources/kenny_free_particles/star_01.png b/resources/kenny_free_particles/star_01.png new file mode 100644 index 0000000..a012cf7 Binary files /dev/null and b/resources/kenny_free_particles/star_01.png differ diff --git a/resources/kenny_free_particles/star_02.png b/resources/kenny_free_particles/star_02.png new file mode 100644 index 0000000..aeb91fc Binary files /dev/null and b/resources/kenny_free_particles/star_02.png differ diff --git a/resources/kenny_free_particles/star_03.png b/resources/kenny_free_particles/star_03.png new file mode 100644 index 0000000..f80a778 Binary files /dev/null and b/resources/kenny_free_particles/star_03.png differ diff --git a/resources/kenny_free_particles/star_04.png b/resources/kenny_free_particles/star_04.png new file mode 100644 index 0000000..5e241c6 Binary files /dev/null and b/resources/kenny_free_particles/star_04.png differ diff --git a/resources/kenny_free_particles/star_05.png b/resources/kenny_free_particles/star_05.png new file mode 100644 index 0000000..dfbd3b8 Binary files /dev/null and b/resources/kenny_free_particles/star_05.png differ diff --git a/resources/kenny_free_particles/star_06.png b/resources/kenny_free_particles/star_06.png new file mode 100644 index 0000000..8ff3b13 Binary files /dev/null and b/resources/kenny_free_particles/star_06.png differ diff --git a/resources/kenny_free_particles/star_07.png b/resources/kenny_free_particles/star_07.png new file mode 100644 index 0000000..bdcbc07 Binary files /dev/null and b/resources/kenny_free_particles/star_07.png differ diff --git a/resources/kenny_free_particles/star_08.png b/resources/kenny_free_particles/star_08.png new file mode 100644 index 0000000..5836541 Binary files /dev/null and b/resources/kenny_free_particles/star_08.png differ diff --git a/resources/kenny_free_particles/star_09.png b/resources/kenny_free_particles/star_09.png new file mode 100644 index 0000000..35eab56 Binary files /dev/null and b/resources/kenny_free_particles/star_09.png differ diff --git a/resources/kenny_free_particles/symbol_01.png b/resources/kenny_free_particles/symbol_01.png new file mode 100644 index 0000000..7a38971 Binary files /dev/null and b/resources/kenny_free_particles/symbol_01.png differ diff --git a/resources/kenny_free_particles/symbol_02.png b/resources/kenny_free_particles/symbol_02.png new file mode 100644 index 0000000..f8e6332 Binary files /dev/null and b/resources/kenny_free_particles/symbol_02.png differ diff --git a/resources/kenny_free_particles/trace_01.png b/resources/kenny_free_particles/trace_01.png new file mode 100644 index 0000000..d449411 Binary files /dev/null and b/resources/kenny_free_particles/trace_01.png differ diff --git a/resources/kenny_free_particles/trace_02.png b/resources/kenny_free_particles/trace_02.png new file mode 100644 index 0000000..da7d549 Binary files /dev/null and b/resources/kenny_free_particles/trace_02.png differ diff --git a/resources/kenny_free_particles/trace_03.png b/resources/kenny_free_particles/trace_03.png new file mode 100644 index 0000000..0a8d0c7 Binary files /dev/null and b/resources/kenny_free_particles/trace_03.png differ diff --git a/resources/kenny_free_particles/trace_04.png b/resources/kenny_free_particles/trace_04.png new file mode 100644 index 0000000..9ee137b Binary files /dev/null and b/resources/kenny_free_particles/trace_04.png differ diff --git a/resources/kenny_free_particles/trace_05.png b/resources/kenny_free_particles/trace_05.png new file mode 100644 index 0000000..106b242 Binary files /dev/null and b/resources/kenny_free_particles/trace_05.png differ diff --git a/resources/kenny_free_particles/trace_06.png b/resources/kenny_free_particles/trace_06.png new file mode 100644 index 0000000..54125ee Binary files /dev/null and b/resources/kenny_free_particles/trace_06.png differ diff --git a/resources/kenny_free_particles/trace_07.png b/resources/kenny_free_particles/trace_07.png new file mode 100644 index 0000000..21469e9 Binary files /dev/null and b/resources/kenny_free_particles/trace_07.png differ diff --git a/resources/kenny_free_particles/twirl_01.png b/resources/kenny_free_particles/twirl_01.png new file mode 100644 index 0000000..aac777e Binary files /dev/null and b/resources/kenny_free_particles/twirl_01.png differ diff --git a/resources/kenny_free_particles/twirl_02.png b/resources/kenny_free_particles/twirl_02.png new file mode 100644 index 0000000..0029942 Binary files /dev/null and b/resources/kenny_free_particles/twirl_02.png differ diff --git a/resources/kenny_free_particles/twirl_03.png b/resources/kenny_free_particles/twirl_03.png new file mode 100644 index 0000000..e73fe05 Binary files /dev/null and b/resources/kenny_free_particles/twirl_03.png differ diff --git a/resources/kenny_free_particles/window_01.png b/resources/kenny_free_particles/window_01.png new file mode 100644 index 0000000..31d2a9f Binary files /dev/null and b/resources/kenny_free_particles/window_01.png differ diff --git a/resources/kenny_free_particles/window_02.png b/resources/kenny_free_particles/window_02.png new file mode 100644 index 0000000..eb862b6 Binary files /dev/null and b/resources/kenny_free_particles/window_02.png differ diff --git a/resources/kenny_free_particles/window_03.png b/resources/kenny_free_particles/window_03.png new file mode 100644 index 0000000..fca09d9 Binary files /dev/null and b/resources/kenny_free_particles/window_03.png differ diff --git a/resources/kenny_free_particles/window_04.png b/resources/kenny_free_particles/window_04.png new file mode 100644 index 0000000..5d72e79 Binary files /dev/null and b/resources/kenny_free_particles/window_04.png differ diff --git a/resources/thinmatrix/cosmic.png b/resources/thinmatrix/cosmic.png new file mode 100755 index 0000000..8207910 Binary files /dev/null and b/resources/thinmatrix/cosmic.png differ diff --git a/resources/thinmatrix/cosmic_0.png b/resources/thinmatrix/cosmic_0.png new file mode 100644 index 0000000..dc14272 Binary files /dev/null and b/resources/thinmatrix/cosmic_0.png differ diff --git a/resources/thinmatrix/cosmic_1.png b/resources/thinmatrix/cosmic_1.png new file mode 100644 index 0000000..223bdf6 Binary files /dev/null and b/resources/thinmatrix/cosmic_1.png differ diff --git a/resources/thinmatrix/cosmic_10.png b/resources/thinmatrix/cosmic_10.png new file mode 100644 index 0000000..d4674ed Binary files /dev/null and b/resources/thinmatrix/cosmic_10.png differ diff --git a/resources/thinmatrix/cosmic_11.png b/resources/thinmatrix/cosmic_11.png new file mode 100644 index 0000000..77472e7 Binary files /dev/null and b/resources/thinmatrix/cosmic_11.png differ diff --git a/resources/thinmatrix/cosmic_12.png b/resources/thinmatrix/cosmic_12.png new file mode 100644 index 0000000..1c69606 Binary files /dev/null and b/resources/thinmatrix/cosmic_12.png differ diff --git a/resources/thinmatrix/cosmic_13.png b/resources/thinmatrix/cosmic_13.png new file mode 100644 index 0000000..02257e1 Binary files /dev/null and b/resources/thinmatrix/cosmic_13.png differ diff --git a/resources/thinmatrix/cosmic_14.png b/resources/thinmatrix/cosmic_14.png new file mode 100644 index 0000000..21b9ace Binary files /dev/null and b/resources/thinmatrix/cosmic_14.png differ diff --git a/resources/thinmatrix/cosmic_15.png b/resources/thinmatrix/cosmic_15.png new file mode 100644 index 0000000..c13ab70 Binary files /dev/null and b/resources/thinmatrix/cosmic_15.png differ diff --git a/resources/thinmatrix/cosmic_2.png b/resources/thinmatrix/cosmic_2.png new file mode 100644 index 0000000..f88e693 Binary files /dev/null and b/resources/thinmatrix/cosmic_2.png differ diff --git a/resources/thinmatrix/cosmic_3.png b/resources/thinmatrix/cosmic_3.png new file mode 100644 index 0000000..85ec29f Binary files /dev/null and b/resources/thinmatrix/cosmic_3.png differ diff --git a/resources/thinmatrix/cosmic_4.png b/resources/thinmatrix/cosmic_4.png new file mode 100644 index 0000000..94eb237 Binary files /dev/null and b/resources/thinmatrix/cosmic_4.png differ diff --git a/resources/thinmatrix/cosmic_5.png b/resources/thinmatrix/cosmic_5.png new file mode 100644 index 0000000..82a89bd Binary files /dev/null and b/resources/thinmatrix/cosmic_5.png differ diff --git a/resources/thinmatrix/cosmic_6.png b/resources/thinmatrix/cosmic_6.png new file mode 100644 index 0000000..3654139 Binary files /dev/null and b/resources/thinmatrix/cosmic_6.png differ diff --git a/resources/thinmatrix/cosmic_7.png b/resources/thinmatrix/cosmic_7.png new file mode 100644 index 0000000..3060b1d Binary files /dev/null and b/resources/thinmatrix/cosmic_7.png differ diff --git a/resources/thinmatrix/cosmic_8.png b/resources/thinmatrix/cosmic_8.png new file mode 100644 index 0000000..06e2e90 Binary files /dev/null and b/resources/thinmatrix/cosmic_8.png differ diff --git a/resources/thinmatrix/cosmic_9.png b/resources/thinmatrix/cosmic_9.png new file mode 100644 index 0000000..8fb86c6 Binary files /dev/null and b/resources/thinmatrix/cosmic_9.png differ diff --git a/resources/thinmatrix/fire.png b/resources/thinmatrix/fire.png new file mode 100755 index 0000000..e2498d9 Binary files /dev/null and b/resources/thinmatrix/fire.png differ diff --git a/resources/thinmatrix/fire_0.png b/resources/thinmatrix/fire_0.png new file mode 100644 index 0000000..7dfd183 Binary files /dev/null and b/resources/thinmatrix/fire_0.png differ diff --git a/resources/thinmatrix/fire_1.png b/resources/thinmatrix/fire_1.png new file mode 100644 index 0000000..cd10257 Binary files /dev/null and b/resources/thinmatrix/fire_1.png differ diff --git a/resources/thinmatrix/fire_10.png b/resources/thinmatrix/fire_10.png new file mode 100644 index 0000000..5586ec2 Binary files /dev/null and b/resources/thinmatrix/fire_10.png differ diff --git a/resources/thinmatrix/fire_11.png b/resources/thinmatrix/fire_11.png new file mode 100644 index 0000000..ab0e9f2 Binary files /dev/null and b/resources/thinmatrix/fire_11.png differ diff --git a/resources/thinmatrix/fire_12.png b/resources/thinmatrix/fire_12.png new file mode 100644 index 0000000..1063932 Binary files /dev/null and b/resources/thinmatrix/fire_12.png differ diff --git a/resources/thinmatrix/fire_13.png b/resources/thinmatrix/fire_13.png new file mode 100644 index 0000000..047e5f8 Binary files /dev/null and b/resources/thinmatrix/fire_13.png differ diff --git a/resources/thinmatrix/fire_14.png b/resources/thinmatrix/fire_14.png new file mode 100644 index 0000000..1b3df22 Binary files /dev/null and b/resources/thinmatrix/fire_14.png differ diff --git a/resources/thinmatrix/fire_15.png b/resources/thinmatrix/fire_15.png new file mode 100644 index 0000000..f31da5b Binary files /dev/null and b/resources/thinmatrix/fire_15.png differ diff --git a/resources/thinmatrix/fire_16.png b/resources/thinmatrix/fire_16.png new file mode 100644 index 0000000..d75e50a Binary files /dev/null and b/resources/thinmatrix/fire_16.png differ diff --git a/resources/thinmatrix/fire_17.png b/resources/thinmatrix/fire_17.png new file mode 100644 index 0000000..ef3f711 Binary files /dev/null and b/resources/thinmatrix/fire_17.png differ diff --git a/resources/thinmatrix/fire_18.png b/resources/thinmatrix/fire_18.png new file mode 100644 index 0000000..883afe1 Binary files /dev/null and b/resources/thinmatrix/fire_18.png differ diff --git a/resources/thinmatrix/fire_19.png b/resources/thinmatrix/fire_19.png new file mode 100644 index 0000000..52b5fa1 Binary files /dev/null and b/resources/thinmatrix/fire_19.png differ diff --git a/resources/thinmatrix/fire_2.png b/resources/thinmatrix/fire_2.png new file mode 100644 index 0000000..e4bed2e Binary files /dev/null and b/resources/thinmatrix/fire_2.png differ diff --git a/resources/thinmatrix/fire_20.png b/resources/thinmatrix/fire_20.png new file mode 100644 index 0000000..11c4a1b Binary files /dev/null and b/resources/thinmatrix/fire_20.png differ diff --git a/resources/thinmatrix/fire_21.png b/resources/thinmatrix/fire_21.png new file mode 100644 index 0000000..563a772 Binary files /dev/null and b/resources/thinmatrix/fire_21.png differ diff --git a/resources/thinmatrix/fire_22.png b/resources/thinmatrix/fire_22.png new file mode 100644 index 0000000..a9e7e29 Binary files /dev/null and b/resources/thinmatrix/fire_22.png differ diff --git a/resources/thinmatrix/fire_23.png b/resources/thinmatrix/fire_23.png new file mode 100644 index 0000000..abde706 Binary files /dev/null and b/resources/thinmatrix/fire_23.png differ diff --git a/resources/thinmatrix/fire_24.png b/resources/thinmatrix/fire_24.png new file mode 100644 index 0000000..41f5626 Binary files /dev/null and b/resources/thinmatrix/fire_24.png differ diff --git a/resources/thinmatrix/fire_25.png b/resources/thinmatrix/fire_25.png new file mode 100644 index 0000000..eda61b6 Binary files /dev/null and b/resources/thinmatrix/fire_25.png differ diff --git a/resources/thinmatrix/fire_26.png b/resources/thinmatrix/fire_26.png new file mode 100644 index 0000000..b6d5502 Binary files /dev/null and b/resources/thinmatrix/fire_26.png differ diff --git a/resources/thinmatrix/fire_27.png b/resources/thinmatrix/fire_27.png new file mode 100644 index 0000000..f5e9890 Binary files /dev/null and b/resources/thinmatrix/fire_27.png differ diff --git a/resources/thinmatrix/fire_28.png b/resources/thinmatrix/fire_28.png new file mode 100644 index 0000000..0d7a8cc Binary files /dev/null and b/resources/thinmatrix/fire_28.png differ diff --git a/resources/thinmatrix/fire_29.png b/resources/thinmatrix/fire_29.png new file mode 100644 index 0000000..1fde261 Binary files /dev/null and b/resources/thinmatrix/fire_29.png differ diff --git a/resources/thinmatrix/fire_3.png b/resources/thinmatrix/fire_3.png new file mode 100644 index 0000000..f7eab79 Binary files /dev/null and b/resources/thinmatrix/fire_3.png differ diff --git a/resources/thinmatrix/fire_30.png b/resources/thinmatrix/fire_30.png new file mode 100644 index 0000000..cfa0c92 Binary files /dev/null and b/resources/thinmatrix/fire_30.png differ diff --git a/resources/thinmatrix/fire_31.png b/resources/thinmatrix/fire_31.png new file mode 100644 index 0000000..f5d4ce5 Binary files /dev/null and b/resources/thinmatrix/fire_31.png differ diff --git a/resources/thinmatrix/fire_32.png b/resources/thinmatrix/fire_32.png new file mode 100644 index 0000000..442fdfe Binary files /dev/null and b/resources/thinmatrix/fire_32.png differ diff --git a/resources/thinmatrix/fire_33.png b/resources/thinmatrix/fire_33.png new file mode 100644 index 0000000..ca57d5d Binary files /dev/null and b/resources/thinmatrix/fire_33.png differ diff --git a/resources/thinmatrix/fire_34.png b/resources/thinmatrix/fire_34.png new file mode 100644 index 0000000..8ccc0a2 Binary files /dev/null and b/resources/thinmatrix/fire_34.png differ diff --git a/resources/thinmatrix/fire_35.png b/resources/thinmatrix/fire_35.png new file mode 100644 index 0000000..572fd62 Binary files /dev/null and b/resources/thinmatrix/fire_35.png differ diff --git a/resources/thinmatrix/fire_36.png b/resources/thinmatrix/fire_36.png new file mode 100644 index 0000000..566dfc6 Binary files /dev/null and b/resources/thinmatrix/fire_36.png differ diff --git a/resources/thinmatrix/fire_37.png b/resources/thinmatrix/fire_37.png new file mode 100644 index 0000000..ec9a9b9 Binary files /dev/null and b/resources/thinmatrix/fire_37.png differ diff --git a/resources/thinmatrix/fire_38.png b/resources/thinmatrix/fire_38.png new file mode 100644 index 0000000..e122e20 Binary files /dev/null and b/resources/thinmatrix/fire_38.png differ diff --git a/resources/thinmatrix/fire_39.png b/resources/thinmatrix/fire_39.png new file mode 100644 index 0000000..58845cf Binary files /dev/null and b/resources/thinmatrix/fire_39.png differ diff --git a/resources/thinmatrix/fire_4.png b/resources/thinmatrix/fire_4.png new file mode 100644 index 0000000..3ab01d5 Binary files /dev/null and b/resources/thinmatrix/fire_4.png differ diff --git a/resources/thinmatrix/fire_40.png b/resources/thinmatrix/fire_40.png new file mode 100644 index 0000000..68349fe Binary files /dev/null and b/resources/thinmatrix/fire_40.png differ diff --git a/resources/thinmatrix/fire_41.png b/resources/thinmatrix/fire_41.png new file mode 100644 index 0000000..5fa8b51 Binary files /dev/null and b/resources/thinmatrix/fire_41.png differ diff --git a/resources/thinmatrix/fire_42.png b/resources/thinmatrix/fire_42.png new file mode 100644 index 0000000..0ee74fe Binary files /dev/null and b/resources/thinmatrix/fire_42.png differ diff --git a/resources/thinmatrix/fire_43.png b/resources/thinmatrix/fire_43.png new file mode 100644 index 0000000..be04bea Binary files /dev/null and b/resources/thinmatrix/fire_43.png differ diff --git a/resources/thinmatrix/fire_44.png b/resources/thinmatrix/fire_44.png new file mode 100644 index 0000000..6837c94 Binary files /dev/null and b/resources/thinmatrix/fire_44.png differ diff --git a/resources/thinmatrix/fire_45.png b/resources/thinmatrix/fire_45.png new file mode 100644 index 0000000..e6ce1c9 Binary files /dev/null and b/resources/thinmatrix/fire_45.png differ diff --git a/resources/thinmatrix/fire_46.png b/resources/thinmatrix/fire_46.png new file mode 100644 index 0000000..a4417b1 Binary files /dev/null and b/resources/thinmatrix/fire_46.png differ diff --git a/resources/thinmatrix/fire_47.png b/resources/thinmatrix/fire_47.png new file mode 100644 index 0000000..485cad5 Binary files /dev/null and b/resources/thinmatrix/fire_47.png differ diff --git a/resources/thinmatrix/fire_48.png b/resources/thinmatrix/fire_48.png new file mode 100644 index 0000000..3fa43a0 Binary files /dev/null and b/resources/thinmatrix/fire_48.png differ diff --git a/resources/thinmatrix/fire_49.png b/resources/thinmatrix/fire_49.png new file mode 100644 index 0000000..5a6c909 Binary files /dev/null and b/resources/thinmatrix/fire_49.png differ diff --git a/resources/thinmatrix/fire_5.png b/resources/thinmatrix/fire_5.png new file mode 100644 index 0000000..32a4651 Binary files /dev/null and b/resources/thinmatrix/fire_5.png differ diff --git a/resources/thinmatrix/fire_50.png b/resources/thinmatrix/fire_50.png new file mode 100644 index 0000000..7f95af2 Binary files /dev/null and b/resources/thinmatrix/fire_50.png differ diff --git a/resources/thinmatrix/fire_51.png b/resources/thinmatrix/fire_51.png new file mode 100644 index 0000000..bc2d238 Binary files /dev/null and b/resources/thinmatrix/fire_51.png differ diff --git a/resources/thinmatrix/fire_52.png b/resources/thinmatrix/fire_52.png new file mode 100644 index 0000000..b67e778 Binary files /dev/null and b/resources/thinmatrix/fire_52.png differ diff --git a/resources/thinmatrix/fire_53.png b/resources/thinmatrix/fire_53.png new file mode 100644 index 0000000..8961c61 Binary files /dev/null and b/resources/thinmatrix/fire_53.png differ diff --git a/resources/thinmatrix/fire_54.png b/resources/thinmatrix/fire_54.png new file mode 100644 index 0000000..934161b Binary files /dev/null and b/resources/thinmatrix/fire_54.png differ diff --git a/resources/thinmatrix/fire_55.png b/resources/thinmatrix/fire_55.png new file mode 100644 index 0000000..298f756 Binary files /dev/null and b/resources/thinmatrix/fire_55.png differ diff --git a/resources/thinmatrix/fire_56.png b/resources/thinmatrix/fire_56.png new file mode 100644 index 0000000..8d987e0 Binary files /dev/null and b/resources/thinmatrix/fire_56.png differ diff --git a/resources/thinmatrix/fire_57.png b/resources/thinmatrix/fire_57.png new file mode 100644 index 0000000..8504a68 Binary files /dev/null and b/resources/thinmatrix/fire_57.png differ diff --git a/resources/thinmatrix/fire_58.png b/resources/thinmatrix/fire_58.png new file mode 100644 index 0000000..cf83850 Binary files /dev/null and b/resources/thinmatrix/fire_58.png differ diff --git a/resources/thinmatrix/fire_59.png b/resources/thinmatrix/fire_59.png new file mode 100644 index 0000000..fe5cd24 Binary files /dev/null and b/resources/thinmatrix/fire_59.png differ diff --git a/resources/thinmatrix/fire_6.png b/resources/thinmatrix/fire_6.png new file mode 100644 index 0000000..798d572 Binary files /dev/null and b/resources/thinmatrix/fire_6.png differ diff --git a/resources/thinmatrix/fire_60.png b/resources/thinmatrix/fire_60.png new file mode 100644 index 0000000..f454576 Binary files /dev/null and b/resources/thinmatrix/fire_60.png differ diff --git a/resources/thinmatrix/fire_61.png b/resources/thinmatrix/fire_61.png new file mode 100644 index 0000000..63d4841 Binary files /dev/null and b/resources/thinmatrix/fire_61.png differ diff --git a/resources/thinmatrix/fire_62.png b/resources/thinmatrix/fire_62.png new file mode 100644 index 0000000..a897da1 Binary files /dev/null and b/resources/thinmatrix/fire_62.png differ diff --git a/resources/thinmatrix/fire_63.png b/resources/thinmatrix/fire_63.png new file mode 100644 index 0000000..186bdc1 Binary files /dev/null and b/resources/thinmatrix/fire_63.png differ diff --git a/resources/thinmatrix/fire_7.png b/resources/thinmatrix/fire_7.png new file mode 100644 index 0000000..b7e8e45 Binary files /dev/null and b/resources/thinmatrix/fire_7.png differ diff --git a/resources/thinmatrix/fire_8.png b/resources/thinmatrix/fire_8.png new file mode 100644 index 0000000..d6ce722 Binary files /dev/null and b/resources/thinmatrix/fire_8.png differ diff --git a/resources/thinmatrix/fire_9.png b/resources/thinmatrix/fire_9.png new file mode 100644 index 0000000..d86e66c Binary files /dev/null and b/resources/thinmatrix/fire_9.png differ diff --git a/resources/thinmatrix/particleAtlas.png b/resources/thinmatrix/particleAtlas.png new file mode 100755 index 0000000..c202947 Binary files /dev/null and b/resources/thinmatrix/particleAtlas.png differ diff --git a/resources/thinmatrix/particleAtlas_0.png b/resources/thinmatrix/particleAtlas_0.png new file mode 100644 index 0000000..dc516ff Binary files /dev/null and b/resources/thinmatrix/particleAtlas_0.png differ diff --git a/resources/thinmatrix/particleAtlas_1.png b/resources/thinmatrix/particleAtlas_1.png new file mode 100644 index 0000000..8b5cb54 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_1.png differ diff --git a/resources/thinmatrix/particleAtlas_10.png b/resources/thinmatrix/particleAtlas_10.png new file mode 100644 index 0000000..94da906 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_10.png differ diff --git a/resources/thinmatrix/particleAtlas_11.png b/resources/thinmatrix/particleAtlas_11.png new file mode 100644 index 0000000..ffcaf2f Binary files /dev/null and b/resources/thinmatrix/particleAtlas_11.png differ diff --git a/resources/thinmatrix/particleAtlas_12.png b/resources/thinmatrix/particleAtlas_12.png new file mode 100644 index 0000000..2f798e7 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_12.png differ diff --git a/resources/thinmatrix/particleAtlas_13.png b/resources/thinmatrix/particleAtlas_13.png new file mode 100644 index 0000000..becfd35 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_13.png differ diff --git a/resources/thinmatrix/particleAtlas_14.png b/resources/thinmatrix/particleAtlas_14.png new file mode 100644 index 0000000..bea16c6 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_14.png differ diff --git a/resources/thinmatrix/particleAtlas_15.png b/resources/thinmatrix/particleAtlas_15.png new file mode 100644 index 0000000..605bef5 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_15.png differ diff --git a/resources/thinmatrix/particleAtlas_2.png b/resources/thinmatrix/particleAtlas_2.png new file mode 100644 index 0000000..a7e9a2d Binary files /dev/null and b/resources/thinmatrix/particleAtlas_2.png differ diff --git a/resources/thinmatrix/particleAtlas_3.png b/resources/thinmatrix/particleAtlas_3.png new file mode 100644 index 0000000..d7c0f04 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_3.png differ diff --git a/resources/thinmatrix/particleAtlas_4.png b/resources/thinmatrix/particleAtlas_4.png new file mode 100644 index 0000000..8ee1a6b Binary files /dev/null and b/resources/thinmatrix/particleAtlas_4.png differ diff --git a/resources/thinmatrix/particleAtlas_5.png b/resources/thinmatrix/particleAtlas_5.png new file mode 100644 index 0000000..1718b2e Binary files /dev/null and b/resources/thinmatrix/particleAtlas_5.png differ diff --git a/resources/thinmatrix/particleAtlas_6.png b/resources/thinmatrix/particleAtlas_6.png new file mode 100644 index 0000000..2d5d269 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_6.png differ diff --git a/resources/thinmatrix/particleAtlas_7.png b/resources/thinmatrix/particleAtlas_7.png new file mode 100644 index 0000000..f66d25f Binary files /dev/null and b/resources/thinmatrix/particleAtlas_7.png differ diff --git a/resources/thinmatrix/particleAtlas_8.png b/resources/thinmatrix/particleAtlas_8.png new file mode 100644 index 0000000..c70e36d Binary files /dev/null and b/resources/thinmatrix/particleAtlas_8.png differ diff --git a/resources/thinmatrix/particleAtlas_9.png b/resources/thinmatrix/particleAtlas_9.png new file mode 100644 index 0000000..4a2e2f8 Binary files /dev/null and b/resources/thinmatrix/particleAtlas_9.png differ diff --git a/resources/thinmatrix/particleStar.png b/resources/thinmatrix/particleStar.png new file mode 100755 index 0000000..0ce7e6f Binary files /dev/null and b/resources/thinmatrix/particleStar.png differ diff --git a/resources/thinmatrix/smoke.png b/resources/thinmatrix/smoke.png new file mode 100755 index 0000000..eef2e19 Binary files /dev/null and b/resources/thinmatrix/smoke.png differ diff --git a/resources/thinmatrix/smoke_0.png b/resources/thinmatrix/smoke_0.png new file mode 100644 index 0000000..1dd9fa9 Binary files /dev/null and b/resources/thinmatrix/smoke_0.png differ diff --git a/resources/thinmatrix/smoke_1.png b/resources/thinmatrix/smoke_1.png new file mode 100644 index 0000000..bdb6330 Binary files /dev/null and b/resources/thinmatrix/smoke_1.png differ diff --git a/resources/thinmatrix/smoke_10.png b/resources/thinmatrix/smoke_10.png new file mode 100644 index 0000000..d19bd60 Binary files /dev/null and b/resources/thinmatrix/smoke_10.png differ diff --git a/resources/thinmatrix/smoke_11.png b/resources/thinmatrix/smoke_11.png new file mode 100644 index 0000000..9383f3b Binary files /dev/null and b/resources/thinmatrix/smoke_11.png differ diff --git a/resources/thinmatrix/smoke_12.png b/resources/thinmatrix/smoke_12.png new file mode 100644 index 0000000..538cd7d Binary files /dev/null and b/resources/thinmatrix/smoke_12.png differ diff --git a/resources/thinmatrix/smoke_13.png b/resources/thinmatrix/smoke_13.png new file mode 100644 index 0000000..bc02be0 Binary files /dev/null and b/resources/thinmatrix/smoke_13.png differ diff --git a/resources/thinmatrix/smoke_14.png b/resources/thinmatrix/smoke_14.png new file mode 100644 index 0000000..4e22159 Binary files /dev/null and b/resources/thinmatrix/smoke_14.png differ diff --git a/resources/thinmatrix/smoke_15.png b/resources/thinmatrix/smoke_15.png new file mode 100644 index 0000000..adaab3a Binary files /dev/null and b/resources/thinmatrix/smoke_15.png differ diff --git a/resources/thinmatrix/smoke_16.png b/resources/thinmatrix/smoke_16.png new file mode 100644 index 0000000..f989fd2 Binary files /dev/null and b/resources/thinmatrix/smoke_16.png differ diff --git a/resources/thinmatrix/smoke_17.png b/resources/thinmatrix/smoke_17.png new file mode 100644 index 0000000..ea10775 Binary files /dev/null and b/resources/thinmatrix/smoke_17.png differ diff --git a/resources/thinmatrix/smoke_18.png b/resources/thinmatrix/smoke_18.png new file mode 100644 index 0000000..209770e Binary files /dev/null and b/resources/thinmatrix/smoke_18.png differ diff --git a/resources/thinmatrix/smoke_19.png b/resources/thinmatrix/smoke_19.png new file mode 100644 index 0000000..4c8a0a9 Binary files /dev/null and b/resources/thinmatrix/smoke_19.png differ diff --git a/resources/thinmatrix/smoke_2.png b/resources/thinmatrix/smoke_2.png new file mode 100644 index 0000000..f5ee9e6 Binary files /dev/null and b/resources/thinmatrix/smoke_2.png differ diff --git a/resources/thinmatrix/smoke_20.png b/resources/thinmatrix/smoke_20.png new file mode 100644 index 0000000..aba2dbc Binary files /dev/null and b/resources/thinmatrix/smoke_20.png differ diff --git a/resources/thinmatrix/smoke_21.png b/resources/thinmatrix/smoke_21.png new file mode 100644 index 0000000..4271e54 Binary files /dev/null and b/resources/thinmatrix/smoke_21.png differ diff --git a/resources/thinmatrix/smoke_22.png b/resources/thinmatrix/smoke_22.png new file mode 100644 index 0000000..23464a6 Binary files /dev/null and b/resources/thinmatrix/smoke_22.png differ diff --git a/resources/thinmatrix/smoke_23.png b/resources/thinmatrix/smoke_23.png new file mode 100644 index 0000000..7b7e9f9 Binary files /dev/null and b/resources/thinmatrix/smoke_23.png differ diff --git a/resources/thinmatrix/smoke_24.png b/resources/thinmatrix/smoke_24.png new file mode 100644 index 0000000..4980e7e Binary files /dev/null and b/resources/thinmatrix/smoke_24.png differ diff --git a/resources/thinmatrix/smoke_25.png b/resources/thinmatrix/smoke_25.png new file mode 100644 index 0000000..4ac8920 Binary files /dev/null and b/resources/thinmatrix/smoke_25.png differ diff --git a/resources/thinmatrix/smoke_26.png b/resources/thinmatrix/smoke_26.png new file mode 100644 index 0000000..da075de Binary files /dev/null and b/resources/thinmatrix/smoke_26.png differ diff --git a/resources/thinmatrix/smoke_27.png b/resources/thinmatrix/smoke_27.png new file mode 100644 index 0000000..15f9af6 Binary files /dev/null and b/resources/thinmatrix/smoke_27.png differ diff --git a/resources/thinmatrix/smoke_28.png b/resources/thinmatrix/smoke_28.png new file mode 100644 index 0000000..c87281d Binary files /dev/null and b/resources/thinmatrix/smoke_28.png differ diff --git a/resources/thinmatrix/smoke_29.png b/resources/thinmatrix/smoke_29.png new file mode 100644 index 0000000..762a7ec Binary files /dev/null and b/resources/thinmatrix/smoke_29.png differ diff --git a/resources/thinmatrix/smoke_3.png b/resources/thinmatrix/smoke_3.png new file mode 100644 index 0000000..d6645d0 Binary files /dev/null and b/resources/thinmatrix/smoke_3.png differ diff --git a/resources/thinmatrix/smoke_30.png b/resources/thinmatrix/smoke_30.png new file mode 100644 index 0000000..d7a60a0 Binary files /dev/null and b/resources/thinmatrix/smoke_30.png differ diff --git a/resources/thinmatrix/smoke_31.png b/resources/thinmatrix/smoke_31.png new file mode 100644 index 0000000..d073d9e Binary files /dev/null and b/resources/thinmatrix/smoke_31.png differ diff --git a/resources/thinmatrix/smoke_32.png b/resources/thinmatrix/smoke_32.png new file mode 100644 index 0000000..fb49336 Binary files /dev/null and b/resources/thinmatrix/smoke_32.png differ diff --git a/resources/thinmatrix/smoke_33.png b/resources/thinmatrix/smoke_33.png new file mode 100644 index 0000000..016d2ce Binary files /dev/null and b/resources/thinmatrix/smoke_33.png differ diff --git a/resources/thinmatrix/smoke_34.png b/resources/thinmatrix/smoke_34.png new file mode 100644 index 0000000..6359a78 Binary files /dev/null and b/resources/thinmatrix/smoke_34.png differ diff --git a/resources/thinmatrix/smoke_35.png b/resources/thinmatrix/smoke_35.png new file mode 100644 index 0000000..02e588a Binary files /dev/null and b/resources/thinmatrix/smoke_35.png differ diff --git a/resources/thinmatrix/smoke_36.png b/resources/thinmatrix/smoke_36.png new file mode 100644 index 0000000..20b86f2 Binary files /dev/null and b/resources/thinmatrix/smoke_36.png differ diff --git a/resources/thinmatrix/smoke_37.png b/resources/thinmatrix/smoke_37.png new file mode 100644 index 0000000..32e0148 Binary files /dev/null and b/resources/thinmatrix/smoke_37.png differ diff --git a/resources/thinmatrix/smoke_38.png b/resources/thinmatrix/smoke_38.png new file mode 100644 index 0000000..e9e2798 Binary files /dev/null and b/resources/thinmatrix/smoke_38.png differ diff --git a/resources/thinmatrix/smoke_39.png b/resources/thinmatrix/smoke_39.png new file mode 100644 index 0000000..bfdffd8 Binary files /dev/null and b/resources/thinmatrix/smoke_39.png differ diff --git a/resources/thinmatrix/smoke_4.png b/resources/thinmatrix/smoke_4.png new file mode 100644 index 0000000..29e776d Binary files /dev/null and b/resources/thinmatrix/smoke_4.png differ diff --git a/resources/thinmatrix/smoke_40.png b/resources/thinmatrix/smoke_40.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_40.png differ diff --git a/resources/thinmatrix/smoke_41.png b/resources/thinmatrix/smoke_41.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_41.png differ diff --git a/resources/thinmatrix/smoke_42.png b/resources/thinmatrix/smoke_42.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_42.png differ diff --git a/resources/thinmatrix/smoke_43.png b/resources/thinmatrix/smoke_43.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_43.png differ diff --git a/resources/thinmatrix/smoke_44.png b/resources/thinmatrix/smoke_44.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_44.png differ diff --git a/resources/thinmatrix/smoke_45.png b/resources/thinmatrix/smoke_45.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_45.png differ diff --git a/resources/thinmatrix/smoke_46.png b/resources/thinmatrix/smoke_46.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_46.png differ diff --git a/resources/thinmatrix/smoke_47.png b/resources/thinmatrix/smoke_47.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_47.png differ diff --git a/resources/thinmatrix/smoke_48.png b/resources/thinmatrix/smoke_48.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_48.png differ diff --git a/resources/thinmatrix/smoke_49.png b/resources/thinmatrix/smoke_49.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_49.png differ diff --git a/resources/thinmatrix/smoke_5.png b/resources/thinmatrix/smoke_5.png new file mode 100644 index 0000000..c18a40c Binary files /dev/null and b/resources/thinmatrix/smoke_5.png differ diff --git a/resources/thinmatrix/smoke_50.png b/resources/thinmatrix/smoke_50.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_50.png differ diff --git a/resources/thinmatrix/smoke_51.png b/resources/thinmatrix/smoke_51.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_51.png differ diff --git a/resources/thinmatrix/smoke_52.png b/resources/thinmatrix/smoke_52.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_52.png differ diff --git a/resources/thinmatrix/smoke_53.png b/resources/thinmatrix/smoke_53.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_53.png differ diff --git a/resources/thinmatrix/smoke_54.png b/resources/thinmatrix/smoke_54.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_54.png differ diff --git a/resources/thinmatrix/smoke_55.png b/resources/thinmatrix/smoke_55.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_55.png differ diff --git a/resources/thinmatrix/smoke_56.png b/resources/thinmatrix/smoke_56.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_56.png differ diff --git a/resources/thinmatrix/smoke_57.png b/resources/thinmatrix/smoke_57.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_57.png differ diff --git a/resources/thinmatrix/smoke_58.png b/resources/thinmatrix/smoke_58.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_58.png differ diff --git a/resources/thinmatrix/smoke_59.png b/resources/thinmatrix/smoke_59.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_59.png differ diff --git a/resources/thinmatrix/smoke_6.png b/resources/thinmatrix/smoke_6.png new file mode 100644 index 0000000..a7a2a86 Binary files /dev/null and b/resources/thinmatrix/smoke_6.png differ diff --git a/resources/thinmatrix/smoke_60.png b/resources/thinmatrix/smoke_60.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_60.png differ diff --git a/resources/thinmatrix/smoke_61.png b/resources/thinmatrix/smoke_61.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_61.png differ diff --git a/resources/thinmatrix/smoke_62.png b/resources/thinmatrix/smoke_62.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_62.png differ diff --git a/resources/thinmatrix/smoke_63.png b/resources/thinmatrix/smoke_63.png new file mode 100644 index 0000000..33d98a8 Binary files /dev/null and b/resources/thinmatrix/smoke_63.png differ diff --git a/resources/thinmatrix/smoke_7.png b/resources/thinmatrix/smoke_7.png new file mode 100644 index 0000000..fe2e791 Binary files /dev/null and b/resources/thinmatrix/smoke_7.png differ diff --git a/resources/thinmatrix/smoke_8.png b/resources/thinmatrix/smoke_8.png new file mode 100644 index 0000000..8301e79 Binary files /dev/null and b/resources/thinmatrix/smoke_8.png differ diff --git a/resources/thinmatrix/smoke_9.png b/resources/thinmatrix/smoke_9.png new file mode 100644 index 0000000..d8ebbaf Binary files /dev/null and b/resources/thinmatrix/smoke_9.png differ diff --git a/src/high_perf/high_perf.cpp b/src/high_perf/high_perf.cpp index 77b7b0b..1ee9acf 100644 --- a/src/high_perf/high_perf.cpp +++ b/src/high_perf/high_perf.cpp @@ -16,10 +16,7 @@ #include #include #include - -//static inline float degreesToRadian(float deg) { -// return deg * (float)M_PI / 180.0f; -//} +#include blt::mat4x4 createViewMatrix(){ auto position = cam.getPosition(); @@ -41,9 +38,6 @@ void window_resize(int width, int height) { // -------{VBO}------- GLuint particleTranslationsBuffer; GLuint particleOffsetsBuffer; -GLuint verticesVBO; -GLuint uvsVBO; -GLuint indicesEBO; // -------{VAO}------- GLuint particleVAO; @@ -67,23 +61,6 @@ typedef struct { vec4 dir; } particle_record; -const float vertices[] = { - 0.5f, 0.5f, 0.0f, - 0.5f, -0.5f, 0.0f, - -0.5f, -0.5f, 0.0f, - -0.5f, 0.5f, 0.0f -}; -const float uvs[] = { - 0, 0, - 0, 1, - 1, 1, - 1, 0 -}; -const unsigned int indices[] = { - 0, 1, 3, - 1, 2, 3 -}; - blt::mat4x4 perspectiveMatrix; blt::mat4x4 viewMatrix; @@ -124,12 +101,6 @@ void render() { blt::vec4 up {inverseView.m01(), inverseView.m11(), inverseView.m21()}; blt::vec4 right {inverseView.m00(), inverseView.m10(), inverseView.m20()}; -// -// up = viewMatrix * up; -// right = viewMatrix * right; - - //BLT_TRACE("Up {%f, %f, %f} || Right {%f, %f, %f}", up.x(), up.y(), up.z(), right.x(), right.y(), right.z()); - BLT_START_INTERVAL("Particles", "Compute Shader"); runPhysicsShader(); BLT_END_INTERVAL("Particles", "Compute Shader"); @@ -178,7 +149,7 @@ void init() { blt::scoped_buffer translations{particle_count}; blt::scoped_buffer offsets{offset_count}; blt::random dir{-1, 1}; - blt::random lifetime{0, 120}; + blt::random lifetime{0, 25}; BLT_TRACE("Creating particles"); for (int i = 0; i < particle_count; i++) @@ -199,9 +170,6 @@ void init() { // create our VBOs glGenBuffers(1, &particleTranslationsBuffer); glGenBuffers(1, &particleOffsetsBuffer); - glGenBuffers(1, &verticesVBO); - glGenBuffers(1, &uvsVBO); - glGenBuffers(1, &indicesEBO); // create our texture glGenTextures(1, &textureArrayID); @@ -212,29 +180,11 @@ void init() { BLT_TRACE("Uploading VBO data and assigning to VAO"); glBindVertexArray(particleVAO); -// // bind and upload vertices data to the GPU -// glBindBuffer(GL_ARRAY_BUFFER, verticesVBO); -// glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 12, vertices, GL_STATIC_DRAW); -// // tell OpenGL how to handle the vertex data when rendering the VAO, the vertices will be bound to slot 0. -// // (we will tell OpenGL what variable uses slot 0 in the shader!) -// glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 3, (void*) 0); -// // tell OpenGL we will be using the first VAO slot, prevents us from having to call it before rendering -// glEnableVertexAttribArray(0); -// -// -// glBindBuffer(GL_ARRAY_BUFFER, uvsVBO); -// glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 8, uvs, GL_STATIC_DRAW); -// glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, (void*) 0); -// glEnableVertexAttribArray(1); - int translations_size = sizeof(particle_record) * particle_count; glBindBuffer(GL_ARRAY_BUFFER, particleTranslationsBuffer); glBufferData(GL_ARRAY_BUFFER, translations_size, translations.buffer, GL_DYNAMIC_DRAW); // allocate some memory on the GPU glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, sizeof(particle_record), (void*) 0); glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, sizeof(particle_record), (void*) offsetof(particle_record, dir)); - // tells opengl that we want to present this data per 1 instance instead of per vertex. -// glVertexAttribDivisor(2, 1); -// glVertexAttribDivisor(3, 1); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); @@ -247,10 +197,6 @@ void init() { glBufferData(GL_SHADER_STORAGE_BUFFER, offset_count * sizeof(vec4), offsets.buffer, GL_STATIC_DRAW); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 1, particleOffsetsBuffer); -// glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indicesEBO); -// glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(float) * 6, indices, GL_STATIC_DRAW); - - // ---------------------------------- // Texturing // ---------------------------------- @@ -274,20 +220,34 @@ void init() { "depression.png", "1665624414712991.jpg" }; + +// std::vector texture_locations {}; +// texture_locations.reserve(64); +// for (int i = 0; i < 64; i++) +// texture_locations.push_back(std::string("thinmatrix/fire_") += std::to_string(i) += ".png"); constexpr int channel_count = 4; int level = 0; stbi_set_flip_vertically_on_load(false); for (const std::string& texture_loc : texture_locations){ + auto resource_location = (std::string("resources/") += texture_loc); + + if (!std::filesystem::exists(resource_location)) { + BLT_FATAL("Unable to load file %s", resource_location.c_str()); + std::abort(); + } + // load the texture int width, height, channels; auto* data = stbi_load( - (std::string("resources/") += texture_loc).c_str(), &width, &height, + resource_location.c_str(), &width, &height, &channels, channel_count ); auto* resized_data = data; + BLT_TRACE("Loading image %s width %d, %d width/height", resource_location.c_str(), width, height); + // resize if necessary if (width != TEXTURE_WIDTH || height != TEXTURE_HEIGHT){ // needs to be malloc since stbi_image_free is just free() @@ -341,9 +301,7 @@ void cleanup() { // cleanup opengl resources glDeleteVertexArrays(1, &particleVAO); glDeleteBuffers(1, &particleTranslationsBuffer); - glDeleteBuffers(1, &verticesVBO); - glDeleteBuffers(1, &uvsVBO); - glDeleteBuffers(1, &indicesEBO); + glDeleteBuffers(1, &particleOffsetsBuffer); delete(instance_shader); } diff --git a/src/main.cpp b/src/main.cpp index f2f3db4..45676c7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -180,7 +180,12 @@ int main(int argc, char** argv) { glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glEnable(GL_BLEND); +#ifdef EXTRAS + // we will handle most transparency in the shaders glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +#else + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); +#endif BLT_DEBUG("GL setup complete!");