From d633509fac40a203e4b479d3860222161c36e624 Mon Sep 17 00:00:00 2001 From: Slaynash Date: Sun, 12 Nov 2017 16:56:12 +0100 Subject: [PATCH] Added PNGDecoder for futur use (Skybox) Removed old shaders Added Skybox shaders PageManager and RenderablePage are now SceneManager and Scene -> Every "page" have been changed to "scene" SGELabelPage is now SGETitleScene AudioLogger is now SoundSystemLoggerBridge ModernShader.java has been removed. you can now extend directly from ShaderProgram DeferredRenderer: - Removed some commented code - Moved shadows render to ShadowsRenderer.java - Moved PostProcessing default pipeline to PostProcessingPipelineDefault.java - DeferredRenderer now have a setPostProcessingPipeline(PostProcessingPipeline) function to have custom post processing shaders - Post processing shaders are now an extension of DeferredShaderProgram (easier use) - Removed useless FBOs --- .classpath | 1 + bin/slaynash/sgengine/Configuration$1.class | Bin 521 -> 521 bytes bin/slaynash/sgengine/Configuration.class | Bin 9238 -> 9409 bytes bin/slaynash/sgengine/SGELabelPage.class | Bin 7312 -> 0 bytes bin/slaynash/sgengine/audio/AudioLogger.class | Bin 1750 -> 0 bytes .../sgengine/audio/AudioManager.class | Bin 5131 -> 5143 bytes .../sgengine/models/Renderable3dModel.class | Bin 2875 -> 2875 bytes .../sgengine/objloader/ObjLoader.class | Bin 9144 -> 9144 bytes .../sgengine/shaders/ModernShader.class | Bin 763 -> 0 bytes .../sgengine/shaders/ModernShader3D.class | Bin 2904 -> 0 bytes .../sgengine/shaders/ModernShaderGUI.class | Bin 2257 -> 0 bytes .../sgengine/shaders/ModernShaderLabel.class | Bin 2141 -> 0 bytes .../sgengine/shaders/ModernShaderVR.class | Bin 2905 -> 0 bytes .../sgengine/shaders/ShaderManager.class | Bin 10977 -> 10947 bytes .../sgengine/utils/DisplayManager.class | Bin 4596 -> 4597 bytes .../sgengine/utils/PageManager$1.class | Bin 7083 -> 0 bytes bin/slaynash/sgengine/utils/PageManager.class | Bin 7340 -> 0 bytes .../sgengine/utils/RenderablePage.class | Bin 438 -> 0 bytes .../pageManagerEvent/PageManagerAdapter.class | Bin 802 -> 0 bytes .../pageManagerEvent/PageManagerEvent.class | Bin 608 -> 0 bytes .../PageManagerListener.class | Bin 360 -> 0 bytes libs/PNGDecoder.jar | Bin 0 -> 11155 bytes res/shaders/free/free2d.fs | 7 - res/shaders/free/free2d.vs | 12 - res/shaders/free/free3d.fs | 7 - res/shaders/free/free3d.vs | 10 - res/shaders/free/freeGUI.fs | 51 --- res/shaders/free/freeGUI.vs | 9 - res/shaders/free/freeLabel.fs | 8 - res/shaders/free/freeLabel.vs | 6 - res/shaders/free/freeVR.fs | 7 - res/shaders/free/freeVR.vs | 10 - res/shaders/skybox/skybox.fs | 10 + res/shaders/skybox/skybox.vs | 14 + src/slaynash/sgengine/Configuration.java | 13 +- .../{SGELabelPage.java => SGETitleScene.java} | 4 +- src/slaynash/sgengine/audio/AudioManager.java | 2 +- ...gger.java => SoundSystemLoggerBridge.java} | 2 +- .../deferredRender/DeferredRenderer.java | 297 ++---------------- .../PostProcessingPipeline.java | 39 +++ .../PostProcessingPipelineDefault.java | 91 ++++++ .../deferredRender/ShadowsRenderer.java | 123 ++++++++ .../shaders/BrightFilterShader.java | 24 +- .../shaders/CombineBloomShader.java | 35 ++- .../shaders/DeferredShaderProgram.java | 61 ++++ .../deferredRender/shaders/HBlurShader.java | 34 +- .../deferredRender/shaders/VBlurShader.java | 29 +- .../sgengine/models/Renderable3dModel.java | 56 ---- .../sgengine/objloader/ObjLoader.java | 2 - .../sgengine/shaders/ModernShader.java | 13 - .../{ModernShader2D.java => Shader2D.java} | 4 +- .../{ModernShader3D.java => Shader3D.java} | 4 +- .../{ModernShaderGUI.java => ShaderGUI.java} | 4 +- ...odernShaderLabel.java => ShaderLabel.java} | 4 +- .../sgengine/shaders/ShaderManager.java | 10 +- .../{ModernShaderVR.java => ShaderVR.java} | 4 +- .../sgengine/utils/DisplayManager.java | 4 +- .../utils/{RenderablePage.java => Scene.java} | 2 +- .../{PageManager.java => SceneManager.java} | 122 ++++--- .../pageManagerEvent/PageManagerAdapter.java | 10 - .../pageManagerEvent/PageManagerEvent.java | 17 - .../pageManagerEvent/PageManagerListener.java | 11 - .../SceneManagerAdapter.java | 10 + .../sceneManagerEvent/SceneManagerEvent.java | 17 + .../SceneManagerListener.java | 11 + 65 files changed, 580 insertions(+), 631 deletions(-) delete mode 100644 bin/slaynash/sgengine/SGELabelPage.class delete mode 100644 bin/slaynash/sgengine/audio/AudioLogger.class delete mode 100644 bin/slaynash/sgengine/shaders/ModernShader.class delete mode 100644 bin/slaynash/sgengine/shaders/ModernShader3D.class delete mode 100644 bin/slaynash/sgengine/shaders/ModernShaderGUI.class delete mode 100644 bin/slaynash/sgengine/shaders/ModernShaderLabel.class delete mode 100644 bin/slaynash/sgengine/shaders/ModernShaderVR.class delete mode 100644 bin/slaynash/sgengine/utils/PageManager$1.class delete mode 100644 bin/slaynash/sgengine/utils/PageManager.class delete mode 100644 bin/slaynash/sgengine/utils/RenderablePage.class delete mode 100644 bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerAdapter.class delete mode 100644 bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerEvent.class delete mode 100644 bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerListener.class create mode 100644 libs/PNGDecoder.jar delete mode 100644 res/shaders/free/free2d.fs delete mode 100644 res/shaders/free/free2d.vs delete mode 100644 res/shaders/free/free3d.fs delete mode 100644 res/shaders/free/free3d.vs delete mode 100644 res/shaders/free/freeGUI.fs delete mode 100644 res/shaders/free/freeGUI.vs delete mode 100644 res/shaders/free/freeLabel.fs delete mode 100644 res/shaders/free/freeLabel.vs delete mode 100644 res/shaders/free/freeVR.fs delete mode 100644 res/shaders/free/freeVR.vs create mode 100644 res/shaders/skybox/skybox.fs create mode 100644 res/shaders/skybox/skybox.vs rename src/slaynash/sgengine/{SGELabelPage.java => SGETitleScene.java} (98%) rename src/slaynash/sgengine/audio/{AudioLogger.java => SoundSystemLoggerBridge.java} (96%) create mode 100644 src/slaynash/sgengine/deferredRender/PostProcessingPipeline.java create mode 100644 src/slaynash/sgengine/deferredRender/PostProcessingPipelineDefault.java create mode 100644 src/slaynash/sgengine/deferredRender/ShadowsRenderer.java create mode 100644 src/slaynash/sgengine/deferredRender/shaders/DeferredShaderProgram.java delete mode 100644 src/slaynash/sgengine/shaders/ModernShader.java rename src/slaynash/sgengine/shaders/{ModernShader2D.java => Shader2D.java} (92%) rename src/slaynash/sgengine/shaders/{ModernShader3D.java => Shader3D.java} (97%) rename src/slaynash/sgengine/shaders/{ModernShaderGUI.java => ShaderGUI.java} (96%) rename src/slaynash/sgengine/shaders/{ModernShaderLabel.java => ShaderLabel.java} (95%) rename src/slaynash/sgengine/shaders/{ModernShaderVR.java => ShaderVR.java} (97%) rename src/slaynash/sgengine/utils/{RenderablePage.java => Scene.java} (87%) rename src/slaynash/sgengine/utils/{PageManager.java => SceneManager.java} (75%) delete mode 100644 src/slaynash/sgengine/utils/pageManagerEvent/PageManagerAdapter.java delete mode 100644 src/slaynash/sgengine/utils/pageManagerEvent/PageManagerEvent.java delete mode 100644 src/slaynash/sgengine/utils/pageManagerEvent/PageManagerListener.java create mode 100644 src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerAdapter.java create mode 100644 src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerEvent.java create mode 100644 src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerListener.java diff --git a/.classpath b/.classpath index bf1823c..ef3cd6c 100644 --- a/.classpath +++ b/.classpath @@ -16,5 +16,6 @@ + diff --git a/bin/slaynash/sgengine/Configuration$1.class b/bin/slaynash/sgengine/Configuration$1.class index 60f2f7e6bac40d0b626ea7ffcde8fdeadc653e1e..efc30625f0ea104dd319f6f85f63a67527d480db 100644 GIT binary patch delta 13 UcmeBV>15e(j*;>G15e(j*;=zQ( z%nMDt5Z`GWab_1LYO*M-W}q{MC3E<3A<+xJE;R8%qtngkbQjL}@8N7YC-$P}oag=h z{?B{P`@S!AUhJ}e^6z^e5K)u|7wp6Nd-K@F#DjKP=6nY`SZ2ygq(;*Rl9NZ6Jk{L~ z$EV^A!mGqb}vE7^XeTw=WL3GuZj zHdD-b=h;3-HRq_Qm`6#3{;s;9>=evEqPahd_~Bt}ap2V>RjCI_DOkd-}LLgeOBJle_fH+5LqVr?WF zdqv3W5pyLj|8Y$9DNT21QlWXXxa6m`@f@Vs*r%CtsmuQi%x8@z$y#F@ z`!%zt)FnS>Faw%-9Om;dXH8~-ZYr9&4D+PH3~J^dFkgmw%48PmW(Z7`{}qg%HjdwZ zn=q0q3(pu*%Q+%WdR6%~LroQzyj98@NO{wgQb9%9+gHM|mZ^MJ)Rje*d2kCxj*4}z z3fwffcf_mUmcYGh;@mp79^9|s-WM)kR9XgiQFQuh`>W^3?#s~r*U47Q8<*(D0@|R%a>B=TpI;5UIg3+`L73hp~_-G?h2#s|a%hoTGu({ldDPdwgk7Vq zl9R68O3~igLhQtpxAR?kTobO@<0#c4BKswCv@-=ijE6rl$?K*`;K`-c~%8o!ll?lt=-3WY6K++w2mtkViOz&LHPfE=$G^yc^4x z{jBZi&=OQRPdpfmN)B+ccrnSOixAuF}M*`r>qfTNhTjTGWQ4(gtw#A|Ccw?!omK>YK#ra8%ih`WBPF zUia?>cLiLtaF$1vR&d*m9Czzn54hoSm3N90;M&1;7&)rZx%;svWHl+dhcFeY}l zMIz?>AjU)hrMMLtggF)^L4% z8tslM(XZNSw&-PD9tzj#GiuDWBJ(;JA$c)u#E-*z!D*4M+Icwut41z|4gE!j8B}Id z#L!-X`LgVegxFBzQxQXd#X+uDPHk2OA=c$0jw5cRaE z?rT|@u(WT$eJeW?A@>I4`x1hesxYeKvyI zVTzeQ)#&OLYUCztvsTQb8~b$SS95_keM$NPH$OJdttH-s=UL>dZ^EajzbHt5uT@by z*-ae8RNC0G%eCXWa%{9llvsI_E_GVqr}1zVle|_oNgPe&UP@w;H%*~mUn`HQ?ea`K zBzu#Fc>~^ZnU}N|cPDR=g=98J|2o9G=&Wo@R?GQhFiAJ50ux#}l4~bxt2(+~-iDrk zBn7*rH)UxaaFwzv)nQiQ&R=HSZ5#KX+Z!nn2soN;M|LG8xLRIKS!Nh+#OYGjc015* zXIkj-+b*3~D?FYy%oMzInJ4TO?tnL!7A)jgfa`a1 zyvyc#!ClJ=eXkl-+m7bcdbbF}9D+CO^r*@9`rsW9LVxJC$Geqx9^O89k2*cxV|)EL z-%COS9(Q;H$SQL}-|xuoRka3lhIs(BM$2mLwQJpnIZWq-7`x@Ucn~|t#rN|Nu0CRJ I#udN+0s2P)g8%>k diff --git a/bin/slaynash/sgengine/SGELabelPage.class b/bin/slaynash/sgengine/SGELabelPage.class deleted file mode 100644 index c3e02ac02933dbb9ec23c4a363ea8c2198d71a76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7312 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 E0qM_mzW@LL diff --git a/bin/slaynash/sgengine/audio/AudioLogger.class b/bin/slaynash/sgengine/audio/AudioLogger.class deleted file mode 100644 index e7d96f0fa366a7c6d5bec1b1a8a7bae4986f024d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1750 zcmcgsU2hXd6g^|_hhv;3HF0Pl35Jx!29kxAreH$|AP`6nv;;*$sEQ``)LB^XTDxlm z?~$6n(WgH51yC#X2lQW5>hCB$vuit1oClsrq&qwJ&fI(MJ!ky)e}DW1;2Yerkr7yk zJo(m_(XJDr8w#YWJS-j)nqz3)4Xc-M^t zE;K#?TV25Js3?+cW}B`wUdq?f@uc5&HsjFs+x17)tsK4-fQ^#^r;f(&_FS)}!aPbi zWn)@k^5}^IzQPQvyp~>1J^5K+@o<$VJ1F||4FpX=TLn`x6 zpDh<~4(B;U+3hO7C9r(lrI9-Q2I@M+*9Ba_qChSV(jo#=m1CggP+{c72!lTn$VFVX zaY^9J=?d5_I-W1?E2-V zC!?sml*3I{UJ@8f9KP&OSNUBfDH5$-ZaB8EsUEmmzmtca$%yO3Bnvq>Kf5YsbC_bMt zK49uSP8a9i;p{ss)Qmk-l+4**KmL0-d?}4S*1qBr&o8Hr52$J&*#yXZQm8=G1jAmI?A?n{4N!Bw_&3sd}QahTJ<2EOH&!Mx{jjZqWd@#Hiz zA6dY%A#9X%do+Av0;`|D-8sUWCz>+<=h^N88(3t!OP`_L?{Ph4S6t_~avaS**|oB( z_JCdM2)ovvElT#>fZaj(2HDgU7wajlH6tNK*Rhs} lW1IQ3U`*E7O9W#L1!E_IIh_h7mkK78%YkTaGiwIx{{!nyW}^TA diff --git a/bin/slaynash/sgengine/audio/AudioManager.class b/bin/slaynash/sgengine/audio/AudioManager.class index 98af5c7431013f838b06e412af36b41479d7e5ae..f69b40087ebf76a376027a2a7302d765b4e9bcfe 100644 GIT binary patch delta 42 ycmeCyn69y5GaIA+L#5hFueQz#d^5qSmW8N9;xMHF{?2ruAaoX*YZ zoKI?}_A4@+GBPMZqry1oqY57`0@U6&W1_q!Oteu%2R6Dqd#Dq&Fu)i?(h(xI1QYp~ z;!UY%)N^W|dO^LU4rta~Hq=|{P#*f4jZwf(zWT2BFmON~M~SVKI?28NsLs;J FxqpEN8R7r{ delta 172 zcmWN|%L)Nu7=Yn-ipC73qzQ?#(JW+Z!Nz3m5Q||@4%s-DLyAIK*jW5GqS(0zH{fD? z`{(&sAM5Gp@hU!|7}SVSCrg6@O-i(0o}SlimjE3icvy5v&?7~k3@JLmuVe~CaM5F2Ncw7AvQZd%f@ zFqw&DFo{fDOu>tt3bF_?jkP$~NDf=crHSb@>8&pV)O6g;%^s`K!tL_!cWsrc3P$i!T$`~u>0yA!DW5WU$&eSYw=83#m13 z!p1|rnNNdRz&hh)y|Mb(V9E%`BX+CB-%1*L)bd`n(1wqFtYE)FXlD}#*u_D;Ii%)0 z)cj#CYS+V2u5*lDj>nS@r?^fqo|8)Qlv3+dB3%@7TA7}qoU_XG93i@?)IEnZ&0(GVR&5XKh!M(o rMWOcrFfVltcJvri{Z1;Rv-HWiKr>aZJOv zYWU-Hae{76a+Oo`5w#L7w`84WB5g{vom4tlL?=0%QKn}pR9ZpK6H;L%7pS5unvwEp zTDK~Cbn#_n-J?9OSjnmNQWeu;diASMtFg3#8;bcR+1yg2IAKLzO+VYY!*1@fj{&{* zp02*nB_62qp-zu@&SORy)Ixgs!&56UuTBbHsO?K_dq~@Ut#`iBCWm$Nh{hh)6>stL rj$#s&@}6=vi12|r#-e-Nqt0=X_`)o{s`8sEziY~Iy!?#rObh=9UUP}a diff --git a/bin/slaynash/sgengine/shaders/ModernShader.class b/bin/slaynash/sgengine/shaders/ModernShader.class deleted file mode 100644 index e5e30b3e1106006487bdb5b5e854f9117bdcc67a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 763 zcmbV|T}uK%6o%iiRdd_&BdzSNo3hV^=qkgTAP_bY6t5d?S~vD1W>?9d)s@giKcF8K zo!J$!M2L1^=RId$&U4QB{CfWYaEbjaQVfTo%O^e$hh}IC-*$XqhC}`+WN6+8bore) z%0go}TJ23-Z5h~-dkmQy$9JLz!*$Ji=3{QU+_%k6Bpu(b|0UBr?lEY$)PasQvFyL;FOGm}Cq!taGkfCO+?ssvvI)k3f+~(0x)m&oAMw#%o2s{zV$q#%d7|DUS zbJTK*i&I{xp|k@qDxtm2l{jHw zlOpxLg*??!sz6G)breY{l8zF#p~bZFjOJ3c480kOR@Ex$DJs8tI}`*6#jmlX(t^*X#*`wDVr?Q5g1@VltHny6h>QG>B3SG(l#>j-nQI8Kks(*|BfE@MvC22cd;P}wF$#41Yz2E)rO@IIAr(Xf=!?y`k z38Xwrzh>*+SjH{xm8fz0+BT&C^PsKVk3nV6Vt8DZX$Y`qK ze$VhFW5mxb30a3070a-J+*V!*^UAdjD%eDNGfC88i;9P^mAvSsl3|Yu>{{wZh2MGP zF#HB=SFuAT-pIsH85X&iFhV8Byrq*?6=``w@tyFxf}H}|cp#cgXtJZbCp-namsl@& zNyM;6rnFb!&=LVIiZ8c#CEq%jK=y&U3^fzRo}}y#NSA670tZz*ipK<2ct)hG@RY#L zRM%o%cu`w~hk9M7=<4Gno&a5Jo0H}7VZ-g$hb@EYc2V)xpzfOTJz9+WW2PsNegO9T zmdi!Lv#bHzEU;-Ls_Y|j`lLXeAGTMAStyh}L-Ki4MLRm^pJiKc=RUg0*OG}&71gLw za6({t1bQ;)QMvh)iiF(kVxrMzU(}~^`=km*Zue5vKX-$!Z#;O|C)kx0<{I*y-;G~8q&qHDr%8b@Emgv=0LCGnUaSg zDa4CX?YhAFRDN;eL=B%)Fv9LQuYko-1B`YKsIohxpvV>7_YJ!oaLW~wG*r%;Azqbh zeZD?&xmzzq^;|jP*fztC1{wMGDQX*~1RS#MxW$Zhv?^a<>EaQDwlMLF6%-zg>W zF+NS;lchP%lH<>COQ4}>9VMTGhD!$8TvsP?acYDxwUR&CYnH6n7b?D#7uFW7W47$q z=t@wC=wd<+G%L^6O7>AUBSxnw`+Vj6hTSb0!Di+f<0m$bD%n_p#=)}ZfJWdy_{Ry(zhfL2}Va1p`gwc{RV`Yp?;$*oO7ki56tBk!Loc z4O?)6Z1rM02Kd2qkireL;(LDDe&gC7JS{nF3VDh+JcVnxMD7GGbFUUv_b?#-=H)o7 z8FH!gSa2zuzJp`2X^hk6M-4SnLF;j(LR&47Z-Lilo#Y}X%hMW_{Q5NBn#6l^pvi!nb{_Aj z09rl^^x-T}ma)octI6R<3jt0tv7QQm>REu#af{bvSDmMoDsOBi06}iE2)9{)+co@~ q16&t0W*-6jN%sK#50diJl+KyJK`4R7$N}N-RUiR@uL)j-Z~g-nWxG89 diff --git a/bin/slaynash/sgengine/shaders/ModernShaderGUI.class b/bin/slaynash/sgengine/shaders/ModernShaderGUI.class deleted file mode 100644 index 928c612d813d10364957ddd868544ff4a55e392d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2257 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 A5&!@I diff --git a/bin/slaynash/sgengine/shaders/ModernShaderVR.class b/bin/slaynash/sgengine/shaders/ModernShaderVR.class deleted file mode 100644 index 17a2f5a42f0b1f324074f716ff41b0a02df02177..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2905 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 aOJu3V|Aw4PGL@(%HIGlZqznnWfd2tG=x3+^ diff --git a/bin/slaynash/sgengine/utils/RenderablePage.class b/bin/slaynash/sgengine/utils/RenderablePage.class deleted file mode 100644 index 5fe1a687c429b13169f49f9b8822ee3fcdb03c13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcma)2Jx{|h5PeRQCWJyu%h$?+0t1#;BO-3#A#N_(Y8S!HYtwQ1i~%Y e+ig?V;<(32k2^h1G3)xfeZ6OqX6#dRaPSL?M_a%E diff --git a/bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerAdapter.class b/bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerAdapter.class deleted file mode 100644 index da1cab73cc50477db769a72e16d43dbbacbda4ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 802 zcmbtSO-lnY5PfO4UHhTcs;yUV)q?@S)7F9%J*^*5={;@3Hf7C9HZAzGJP98B0sbg) zvRx4LuuuLUX;6 z+VY2=!qrSXTWNfF47&@l5>-~9%Qr?bTX diff --git a/bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerEvent.class b/bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerEvent.class deleted file mode 100644 index fca842f08f663db482dc9b8cf0d659096d526d4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcma)(O;5r=5Qg6=g-R(OqT<;bABmfAGZ-&MPWTZu+!xrCC3P`vA@N^nqA~H{5Aa7B zXA1|TA$sWS%yj12d1pU9-`)XqvG2hl93_!_Ffy5nBvdBUMu|nLqeR@xP@PM|Ha=S_ zlZvY!2@fuzHj_&!B56W#Ihv_)N^or_p*h$@zE)PbR08BtAXEn|=VEa;Qt_?5j!+-W$1)nqSlf7=bknI$2)&I1 z|G5g*;Dsu+atQ5aYa{8GbpK|)h{vk0?R0w<@O|fpcDp!WNjZKpf@5{D=dkZ#i*1pk zKF1E9e*2Zb&I`&&nQ2# Vps9!_#L~jW7QAk!1h? diff --git a/bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerListener.class b/bin/slaynash/sgengine/utils/pageManagerEvent/PageManagerListener.class deleted file mode 100644 index 9ca9897fe5be562682a97d52fc063fde5c674bff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmbV|u}%U(5QhJSgVQ@eJADLg+{9L6W3Yl?LSjE2lViwcF}Dj5AB}-GD2FcRn4 za+M-cxL(kjv>{vS$>)L#pQ5X9Q%@sG*XyShg*=j9=fTf2g_pb0e=ew*Pxl`UZtAJ> z5tr3)vvje^#fld)@)Nr*f6LJ`U9PHv-^8%O?H{oo;_V@WLOZ-p_^nQ&km3R{?`5M| Pqj{sfsKMV4wS~a}k&0w1 diff --git a/libs/PNGDecoder.jar b/libs/PNGDecoder.jar new file mode 100644 index 0000000000000000000000000000000000000000..86cf065c6cd5992cc3a768d3531d6ba2472f75e5 GIT binary patch literal 11155 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 abJQ;<3H}@H0RUirKjwdvXQh;XT>U?yYkA=S literal 0 HcmV?d00001 diff --git a/res/shaders/free/free2d.fs b/res/shaders/free/free2d.fs deleted file mode 100644 index 2771247..0000000 --- a/res/shaders/free/free2d.fs +++ /dev/null @@ -1,7 +0,0 @@ -#version 120 - -uniform sampler2D textureDiffuse; - -void main(void){ - gl_FragColor = texture2D(textureDiffuse, gl_TexCoord[0].st); -} \ No newline at end of file diff --git a/res/shaders/free/free2d.vs b/res/shaders/free/free2d.vs deleted file mode 100644 index 26619c7..0000000 --- a/res/shaders/free/free2d.vs +++ /dev/null @@ -1,12 +0,0 @@ -#version 120 - -uniform mat4 mMatrix; -uniform mat4 vMatrix; -uniform mat4 pMatrix; -uniform float zoom; -uniform float displayRatio; - -void main(void){ - gl_Position = pMatrix * vMatrix * (mMatrix * vec4(gl_Vertex.xy, gl_Vertex.z, 1.0)) * vec4(zoom, zoom*displayRatio, 1, 1); - gl_TexCoord[0] = gl_MultiTexCoord0; -} \ No newline at end of file diff --git a/res/shaders/free/free3d.fs b/res/shaders/free/free3d.fs deleted file mode 100644 index 2771247..0000000 --- a/res/shaders/free/free3d.fs +++ /dev/null @@ -1,7 +0,0 @@ -#version 120 - -uniform sampler2D textureDiffuse; - -void main(void){ - gl_FragColor = texture2D(textureDiffuse, gl_TexCoord[0].st); -} \ No newline at end of file diff --git a/res/shaders/free/free3d.vs b/res/shaders/free/free3d.vs deleted file mode 100644 index 3618a8a..0000000 --- a/res/shaders/free/free3d.vs +++ /dev/null @@ -1,10 +0,0 @@ -#version 120 - -uniform mat4 mMatrix; -uniform mat4 vMatrix; -uniform mat4 pMatrix; - -void main(void){ - gl_Position = pMatrix * vMatrix * (mMatrix * gl_Vertex); - gl_TexCoord[0] = gl_MultiTexCoord0; -} \ No newline at end of file diff --git a/res/shaders/free/freeGUI.fs b/res/shaders/free/freeGUI.fs deleted file mode 100644 index 333f56f..0000000 --- a/res/shaders/free/freeGUI.fs +++ /dev/null @@ -1,51 +0,0 @@ -#version 120 - -uniform vec3 colour; -uniform sampler2D textureDiffuse; - -const float width = 0.5; -const float edge = 0.1; - -const float borderWidth = 0.6; -const float borderEdge = 0.2; - -const vec3 outlineColour = vec3(0.0, 0.0, 0.0); - -uniform float textmode; -uniform float combomode; -uniform float invertColor; -uniform vec2 cbCuts; - -void main(void){ - - if(combomode > 0.5){ - vec4 p = gl_FragCoord; - if(p.y > cbCuts.x){ - discard; - } - if(p.y < cbCuts.y){ - discard; - } - } - - if(textmode > 0.5){ - float distance = 1.0 - texture2D(textureDiffuse, gl_TexCoord[0].st).a; - float alpha = 1.0 - smoothstep(width, width + edge, distance); - - float distance2 = 1.0 - texture2D(textureDiffuse, gl_TexCoord[0].st).a; - float outlineAlpha = 1.0 - smoothstep(borderWidth, borderWidth + borderEdge, distance2); - - float overallAlpha = alpha + (1.0 - alpha) * outlineAlpha; - vec3 overallColour = mix(outlineColour, colour, alpha / overallAlpha); - - gl_FragColor = vec4(overallColour, overallAlpha); - } - else{ - gl_FragColor = texture2D(textureDiffuse, gl_TexCoord[0].st); - } - if(invertColor > 0.5){ - gl_FragColor *= -1; - gl_FragColor += vec4(1,1,1,1); - } - -} \ No newline at end of file diff --git a/res/shaders/free/freeGUI.vs b/res/shaders/free/freeGUI.vs deleted file mode 100644 index fedb5eb..0000000 --- a/res/shaders/free/freeGUI.vs +++ /dev/null @@ -1,9 +0,0 @@ -#version 120 - -uniform vec2 translation; -uniform vec2 screenSize; - -void main(void){ - gl_Position = vec4((gl_Vertex.xy+translation)/screenSize*vec2(2,-2)-vec2(1,-1), 0.0, 1.0); - gl_TexCoord[0] = gl_MultiTexCoord0; -} \ No newline at end of file diff --git a/res/shaders/free/freeLabel.fs b/res/shaders/free/freeLabel.fs deleted file mode 100644 index cb030db..0000000 --- a/res/shaders/free/freeLabel.fs +++ /dev/null @@ -1,8 +0,0 @@ -#version 120 - -uniform float visibility; -uniform sampler2D textureDiffuse; - -void main(void){ - gl_FragColor = vec4(texture2D(textureDiffuse, gl_TexCoord[0].st).rgb, visibility); -} \ No newline at end of file diff --git a/res/shaders/free/freeLabel.vs b/res/shaders/free/freeLabel.vs deleted file mode 100644 index eea6192..0000000 --- a/res/shaders/free/freeLabel.vs +++ /dev/null @@ -1,6 +0,0 @@ -#version 120 - -void main(void){ - gl_Position = ftransform(); - gl_TexCoord[0] = gl_MultiTexCoord0; -} \ No newline at end of file diff --git a/res/shaders/free/freeVR.fs b/res/shaders/free/freeVR.fs deleted file mode 100644 index 2771247..0000000 --- a/res/shaders/free/freeVR.fs +++ /dev/null @@ -1,7 +0,0 @@ -#version 120 - -uniform sampler2D textureDiffuse; - -void main(void){ - gl_FragColor = texture2D(textureDiffuse, gl_TexCoord[0].st); -} \ No newline at end of file diff --git a/res/shaders/free/freeVR.vs b/res/shaders/free/freeVR.vs deleted file mode 100644 index 53c26bd..0000000 --- a/res/shaders/free/freeVR.vs +++ /dev/null @@ -1,10 +0,0 @@ -#version 120 - -uniform mat4 mMatrix; -uniform mat4 vMatrix; -uniform mat4 pMatrix; - -void main(){ - gl_Position = pMatrix * vMatrix * (mMatrix * gl_Vertex); - gl_TexCoord[0] = gl_MultiTexCoord0; -} \ No newline at end of file diff --git a/res/shaders/skybox/skybox.fs b/res/shaders/skybox/skybox.fs new file mode 100644 index 0000000..0a8981c --- /dev/null +++ b/res/shaders/skybox/skybox.fs @@ -0,0 +1,10 @@ +#version 400 + +in vec3 textureCoords; +out vec4 out_Color; + +uniform samplerCube cubeMap; + +void main(void){ + out_Color = texture(cubeMap, textureCoords); +} \ No newline at end of file diff --git a/res/shaders/skybox/skybox.vs b/res/shaders/skybox/skybox.vs new file mode 100644 index 0000000..a1803c8 --- /dev/null +++ b/res/shaders/skybox/skybox.vs @@ -0,0 +1,14 @@ +#version 400 + +in vec3 position; +out vec3 textureCoords; + +uniform mat4 projectionMatrix; +uniform mat4 viewMatrix; + +void main(void){ + + gl_Position = projectionMatrix * viewMatrix * vec4(position, 1.0); + textureCoords = position; + +} \ No newline at end of file diff --git a/src/slaynash/sgengine/Configuration.java b/src/slaynash/sgengine/Configuration.java index 16def70..2ffe84f 100644 --- a/src/slaynash/sgengine/Configuration.java +++ b/src/slaynash/sgengine/Configuration.java @@ -5,7 +5,7 @@ import java.net.URLDecoder; import slaynash.sgengine.playercharacters.PlayerCharacter; -import slaynash.sgengine.utils.PageManager; +import slaynash.sgengine.utils.SceneManager; public class Configuration { @@ -107,7 +107,11 @@ public static void loadDefault3DRPGConfigurations() { setSelfEntitiesUpdateEnabled(true); setHandRendered(false); } - + + /** + * @return The install path of the game.
+ * Default location: jar file location + */ public static String getAbsoluteInstallPath() { if(installPath.equals("")){ try { @@ -116,6 +120,7 @@ public static String getAbsoluteInstallPath() { LogSystem.out_println("[Configuration] Root directory: "+installPath); }catch (UnsupportedEncodingException e1) {e1.printStackTrace(LogSystem.getErrStream());} } + if(!installPath.endsWith("\\") && !installPath.endsWith("/")) installPath += "/"; return installPath; } @@ -188,7 +193,7 @@ public static void setZFar(float zfar){ } public static void enableVR(boolean enable){ - if(!PageManager.isInitialized()){ + if(!SceneManager.isInitialized()){ vr = enable; } else LogSystem.out_println("[PageManager] Display manager already initialized ! Please enable or disable VR before !"); @@ -327,7 +332,7 @@ public static void setHandRendered(boolean handrendered) { Configuration.handRendered = handrendered; } - public static boolean isDeferredRenderBloomEnabled() { + public static boolean isPostProcessingEnabled() { return deferredRenderBloom; } diff --git a/src/slaynash/sgengine/SGELabelPage.java b/src/slaynash/sgengine/SGETitleScene.java similarity index 98% rename from src/slaynash/sgengine/SGELabelPage.java rename to src/slaynash/sgengine/SGETitleScene.java index cc7fde3..c9570ab 100644 --- a/src/slaynash/sgengine/SGELabelPage.java +++ b/src/slaynash/sgengine/SGETitleScene.java @@ -17,12 +17,12 @@ import slaynash.sgengine.textureUtils.TextureManager; import slaynash.sgengine.utils.DisplayManager; import slaynash.sgengine.utils.MatrixUtils; -import slaynash.sgengine.utils.RenderablePage; +import slaynash.sgengine.utils.Scene; import slaynash.sgengine.utils.VRUtils; import slaynash.sgengine.utils.vr.VRController; import slaynash.sgengine.world3d.loader.Ent_PointLight; -public class SGELabelPage extends RenderablePage { +public class SGETitleScene extends Scene { private float startTime; private TextureDef background; diff --git a/src/slaynash/sgengine/audio/AudioManager.java b/src/slaynash/sgengine/audio/AudioManager.java index a1476ce..c1e10e8 100644 --- a/src/slaynash/sgengine/audio/AudioManager.java +++ b/src/slaynash/sgengine/audio/AudioManager.java @@ -50,7 +50,7 @@ public static void init() { return; } random = new Random(); - SoundSystemConfig.setLogger(new AudioLogger()); + SoundSystemConfig.setLogger(new SoundSystemLoggerBridge()); boolean aLCompatible = SoundSystem.libraryCompatible( LibraryLWJGLOpenAL.class ); try { Class libraryType = Library.class; diff --git a/src/slaynash/sgengine/audio/AudioLogger.java b/src/slaynash/sgengine/audio/SoundSystemLoggerBridge.java similarity index 96% rename from src/slaynash/sgengine/audio/AudioLogger.java rename to src/slaynash/sgengine/audio/SoundSystemLoggerBridge.java index f28bc7c..b2a10ee 100644 --- a/src/slaynash/sgengine/audio/AudioLogger.java +++ b/src/slaynash/sgengine/audio/SoundSystemLoggerBridge.java @@ -3,7 +3,7 @@ import paulscode.sound.SoundSystemLogger; import slaynash.sgengine.LogSystem; -public class AudioLogger extends SoundSystemLogger { +public class SoundSystemLoggerBridge extends SoundSystemLogger { @Override public void message( String message, int indent ) { diff --git a/src/slaynash/sgengine/deferredRender/DeferredRenderer.java b/src/slaynash/sgengine/deferredRender/DeferredRenderer.java index 7286e26..c8f012d 100644 --- a/src/slaynash/sgengine/deferredRender/DeferredRenderer.java +++ b/src/slaynash/sgengine/deferredRender/DeferredRenderer.java @@ -1,6 +1,5 @@ package slaynash.sgengine.deferredRender; -import java.nio.FloatBuffer; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -8,28 +7,16 @@ import org.lwjgl.opengl.Display; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL30; -import org.lwjgl.opengl.GL32; -import org.lwjgl.util.vector.Matrix4f; -import org.lwjgl.util.vector.Vector3f; import de.fruitfly.ovr.structs.Vector2i; import slaynash.sgengine.Configuration; import slaynash.sgengine.LogSystem; -import slaynash.sgengine.deferredRender.shaders.BrightFilterShader; -import slaynash.sgengine.deferredRender.shaders.CombineBloomShader; -import slaynash.sgengine.deferredRender.shaders.HBlurShader; -import slaynash.sgengine.deferredRender.shaders.VBlurShader; -import slaynash.sgengine.models.utils.Vao; -import slaynash.sgengine.models.utils.VaoManager; import slaynash.sgengine.shaders.ShaderManager; import slaynash.sgengine.shaders.ShaderProgram; import slaynash.sgengine.utils.LightsManager; -import slaynash.sgengine.utils.MatrixUtils; import slaynash.sgengine.utils.VRUtils; -import slaynash.sgengine.world3d.loader.Ent_PointLight; public class DeferredRenderer { @@ -37,295 +24,82 @@ public class DeferredRenderer { protected static Map> currentMap; protected static Map> modelRenderers = new HashMap>(); - //private static ArrayList bindTextures = new ArrayList(); protected static ShaderProgram currentShader; - protected static int[] depthCubemap; - protected static int[] depthMapFBO; protected static FrameBufferedObject[] fbos_colorSSAA = new FrameBufferedObject[3]; protected static FrameBufferedObject[] fbos_color = new FrameBufferedObject[3]; - protected static FrameBufferedObject[] fbos_bright = new FrameBufferedObject[3]; - protected static FrameBufferedObject[] fbos_Vblur = new FrameBufferedObject[3]; - protected static FrameBufferedObject[] fbos_Hblur = new FrameBufferedObject[3]; - - protected static Vector2i vrRendersize; - protected static BrightFilterShader brightFilterShader; - protected static VBlurShader vblurShader; - protected static HBlurShader hblurShader; - protected static CombineBloomShader combinebloomShader; - protected static ImageRenderer quadRenderer; - protected static Vao quadVAO; - - - public static final int SHADOW_WIDTH = 1024, SHADOW_HEIGHT = 1024; + private static PostProcessingPipeline postProcessingPipeline; + private static long startTime; public static void init() { - depthCubemap = new int[Configuration.MAX_LIGHTS]; - depthMapFBO = new int[Configuration.MAX_LIGHTS*6]; + if(postProcessingPipeline == null) postProcessingPipeline = new PostProcessingPipelineDefault(); + ShadowsRenderer.init(); - for(int l=0;l Shadows render time: "+((System.nanoTime()-startTime)/1e6f)+"ms"); - startTime = System.nanoTime(); - } + ShadowsRenderer.renderShadows(eye, shaderLists); + timingdebug("Shadows render time"); } - if(Configuration.isDeferredRenderBloomEnabled()) { + if(Configuration.isPostProcessingEnabled()) { fbos_colorSSAA[eye].bindFrameBuffer(); - GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); - renderColor(eye); fbos_colorSSAA[eye].unbindFrameBuffer(); - fbos_colorSSAA[eye].resolveToFbo(fbos_color[eye]); - if(Configuration.isUsingTimingDebug()) { - GL11.glFinish(); - LogSystem.out_println("[TIMING] > Deferred render time: "+((System.nanoTime()-startTime)/1e6f)+"ms"); - startTime = System.nanoTime(); - } - renderBloom(eye); - if(Configuration.isUsingTimingDebug()) { - GL11.glFinish(); - LogSystem.out_println("[TIMING] > Bloom render time: "+((System.nanoTime()-startTime)/1e6f)+"ms"); - startTime = System.nanoTime(); - } + + timingdebug("Deferred render time"); + renderPostProcessing(eye); + timingdebug("PostProcessing render time"); } else { VRUtils.setCurrentRenderEye(eye); renderColor(eye); - if(Configuration.isUsingTimingDebug()) { - GL11.glFinish(); - LogSystem.out_println("[TIMING] > Deferred render time: "+((System.nanoTime()-startTime)/1e6f)+"ms"); - startTime = System.nanoTime(); - } + timingdebug("Deferred render time"); } if(Configuration.isCleanBetweenDeferredRendersEnabled()) cleanup(); - if(Configuration.isUsingTimingDebug()) { - GL11.glFinish(); - LogSystem.out_println("[TIMING] > Deferred cleanup time: "+((System.nanoTime()-startTime)/1e6f)+"ms"); - startTime = System.nanoTime(); - } + timingdebug("Deferred cleanup time"); + GL11.glDisable(GL11.GL_CULL_FACE); } - private static void renderBloom(int eye) { + private static void renderPostProcessing(int eye) { GL11.glDisable(GL11.GL_CULL_FACE); - /* - VRUtils.setCurrentRenderEye(eye); - brightFilterShader.useDirect(); - brightFilterShader.bindModel(quadVAO.getVaoID()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_color[eye].getColourTexture()); - quadRenderer.renderQuad(); - //*/ - - /* - fbos_bright[eye].bindFrameBuffer(); - - brightFilterShader.useDirect(); - brightFilterShader.bindModel(quadVAO.getVaoID()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_color[eye].getColourTexture()); - quadRenderer.renderQuad(); - brightFilterShader.stop(); - - fbos_bright[eye].unbindFrameBuffer(); - fbos_Hblur[eye].bindFrameBuffer(); - - hblurShader.useDirect(); - hblurShader.loadTargetWidth(eye == VRUtils.EYE_CENTER ? Display.getWidth() : vrRendersize.x); - hblurShader.bindModel(quadVAO.getVaoID()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_bright[eye].getColourTexture()); - quadRenderer.renderQuad(); - hblurShader.stop(); - - fbos_Hblur[eye].unbindFrameBuffer(); - VRUtils.setCurrentRenderEye(eye); - - vblurShader.useDirect(); - vblurShader.loadTargetHeight(eye == VRUtils.EYE_CENTER ? Display.getHeight() : vrRendersize.y); - vblurShader.bindModel(quadVAO.getVaoID()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_Hblur[eye].getColourTexture()); - quadRenderer.renderQuad(); - vblurShader.stop(); - //*/ - - //* - fbos_bright[eye].bindFrameBuffer(); - - brightFilterShader.useDirect(); - brightFilterShader.bindModel(quadVAO.getVaoID()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_color[eye].getColourTexture()); - quadRenderer.renderQuad(); - brightFilterShader.stop(); - - fbos_bright[eye].unbindFrameBuffer(); - fbos_Hblur[eye].bindFrameBuffer(); - - hblurShader.useDirect(); - hblurShader.loadTargetWidth(eye == VRUtils.EYE_CENTER ? Display.getWidth() : vrRendersize.x); - hblurShader.bindModel(quadVAO.getVaoID()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_bright[eye].getColourTexture()); - quadRenderer.renderQuad(); - hblurShader.stop(); - - fbos_Hblur[eye].unbindFrameBuffer(); - fbos_Vblur[eye].bindFrameBuffer(); - - vblurShader.useDirect(); - vblurShader.loadTargetHeight(eye == VRUtils.EYE_CENTER ? Display.getHeight() : vrRendersize.y); - vblurShader.bindModel(quadVAO.getVaoID()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_Hblur[eye].getColourTexture()); - quadRenderer.renderQuad(); - vblurShader.stop(); - - fbos_Vblur[eye].unbindFrameBuffer(); - VRUtils.setCurrentRenderEye(eye); - - combinebloomShader.useDirect(); - combinebloomShader.bindModel(quadVAO.getVaoID()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_color[eye].getColourTexture()); - GL13.glActiveTexture(GL13.GL_TEXTURE0+ShaderManager.TEXTURE_COLOR+1); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, fbos_Vblur[eye].getColourTexture()); - quadRenderer.renderQuad(); - combinebloomShader.stop(); - //*/ + if(eye != VRUtils.EYE_CENTER) postProcessingPipeline.renderVR(fbos_color[eye], eye); + else postProcessingPipeline.render(fbos_color[VRUtils.EYE_CENTER]); } - - private static void renderShadows(int eye) { - - Matrix4f projMat = MatrixUtils.createProjectionMatrix(Configuration.getLightsZNear(), Configuration.getLightsZFar(), 90f, (float)SHADOW_WIDTH/(float)SHADOW_HEIGHT); - - GL11.glViewport(0, 0, SHADOW_WIDTH, SHADOW_HEIGHT); - for(int i=0;i> entry:map.getObjectList().entrySet()){//for each models - if(!entry.getValue().get(0).isCastingShadow()) break; - shadowShader.bindModel(entry.getKey()); - for(DeferredModelRenderer dmr:entry.getValue()){ - shadowShader.bindDatasDirect(dmr.getShaderDatas()); - if(eye == VRUtils.EYE_CENTER) dmr.render(); else dmr.renderVR(eye); - } - } - shadowShader.stop(); - } - - - } - - - for(int i=0;i "+text+": "+((System.nanoTime()-startTime)/1e6f)+"ms"); + startTime = System.nanoTime(); } } + + protected static void renderColor(int eye){ for(ShaderRenderlist map:shaderLists){//for each shader phase @@ -350,7 +124,6 @@ protected static void renderColor(int eye){ public static void cleanup(){ currentShader = null; currentMap = null; - //bindTextures = new ArrayList(); shaderLists = new ArrayList(); } @@ -399,10 +172,4 @@ public static void addRenderStep(ShaderProgram shader){ currentShader = null; } } - /* - public static void registerModelRenderer(Object modelrendererClass, Class dmr){ - LogSystem.out_println("[DeferredRenderer] Registered DMR for class "+modelrendererClass.getClass()); - modelRenderers.put(modelrendererClass.getClass(), dmr); - } - */ } diff --git a/src/slaynash/sgengine/deferredRender/PostProcessingPipeline.java b/src/slaynash/sgengine/deferredRender/PostProcessingPipeline.java new file mode 100644 index 0000000..dd77d1a --- /dev/null +++ b/src/slaynash/sgengine/deferredRender/PostProcessingPipeline.java @@ -0,0 +1,39 @@ +package slaynash.sgengine.deferredRender; + +import org.lwjgl.opengl.Display; + +import slaynash.sgengine.utils.VRUtils; + +public abstract class PostProcessingPipeline { + + private boolean initialised = false; + private boolean initialisedVR = false; + + public abstract void init(int width, int height); + public abstract void initVR(int width, int height); + public abstract void destroy(); + + public void render(FrameBufferedObject inputFbo) { + if(!initialised) { + initialised = true; + init(Display.getWidth(), Display.getHeight()); + } + } + + public void renderVR(FrameBufferedObject inputFbo, int eye) { + if(!initialisedVR) { + initialisedVR = true; + initVR(VRUtils.getRendersize().x, VRUtils.getRendersize().y); + } + } + + public boolean isInitialised() { + return initialised; + } + public boolean isVRInitialised() { + return initialisedVR; + } + + + +} diff --git a/src/slaynash/sgengine/deferredRender/PostProcessingPipelineDefault.java b/src/slaynash/sgengine/deferredRender/PostProcessingPipelineDefault.java new file mode 100644 index 0000000..de3c190 --- /dev/null +++ b/src/slaynash/sgengine/deferredRender/PostProcessingPipelineDefault.java @@ -0,0 +1,91 @@ +package slaynash.sgengine.deferredRender; + +import slaynash.sgengine.deferredRender.shaders.BrightFilterShader; +import slaynash.sgengine.deferredRender.shaders.CombineBloomShader; +import slaynash.sgengine.deferredRender.shaders.HBlurShader; +import slaynash.sgengine.deferredRender.shaders.VBlurShader; +import slaynash.sgengine.utils.VRUtils; + +public class PostProcessingPipelineDefault extends PostProcessingPipeline { + + private BrightFilterShader brightFilterShader; + private HBlurShader hblurShader; + private VBlurShader vblurShader; + private CombineBloomShader combinebloomShader; + + private BrightFilterShader brightFilterShaderVR; + private HBlurShader hblurShaderVR; + private VBlurShader vblurShaderVR; + private CombineBloomShader combinebloomShaderVR; + + @Override + public void init(int width, int height) { + brightFilterShader = new BrightFilterShader(width, height); + hblurShader = new HBlurShader(width, height); + vblurShader = new VBlurShader(width, height); + combinebloomShader = new CombineBloomShader(width, height); + } + + @Override + public void initVR(int width, int height) { + brightFilterShaderVR = new BrightFilterShader(width, height); + hblurShaderVR = new HBlurShader(width, height); + vblurShaderVR = new VBlurShader(width, height); + combinebloomShaderVR = new CombineBloomShader(width, height); + } + + @Override + public void render(FrameBufferedObject inputFbo) { + super.render(inputFbo); + + brightFilterShader.setInputTexture(inputFbo.getColourTexture()); + brightFilterShader.processDirect(); + + hblurShader.setInputTexture(brightFilterShader.getTexture()); + hblurShader.process(); + + vblurShader.setInputTexture(hblurShader.getTexture()); + vblurShader.process(); + + VRUtils.setCurrentRenderEye(VRUtils.EYE_CENTER); + combinebloomShader.setColourTexture(inputFbo.getColourTexture()); + combinebloomShader.setBluredTexture(vblurShader.getTexture()); + combinebloomShader.processDirect(); + } + + @Override + public void renderVR(FrameBufferedObject inputFbo, int eye) { + super.renderVR(inputFbo, eye); + + brightFilterShaderVR.setInputTexture(inputFbo.getColourTexture()); + brightFilterShaderVR.process(); + + hblurShaderVR.setInputTexture(brightFilterShaderVR.getTexture()); + hblurShaderVR.processDirect(); + + vblurShaderVR.setInputTexture(vblurShaderVR.getTexture()); + vblurShaderVR.processDirect(); + + VRUtils.setCurrentRenderEye(eye); + combinebloomShaderVR.setColourTexture(inputFbo.getColourTexture()); + combinebloomShaderVR.setBluredTexture(vblurShaderVR.getTexture()); + combinebloomShaderVR.processDirect(); + } + + @Override + public void destroy() { + if(isInitialised()) { + brightFilterShader.destroy(); + hblurShader.destroy(); + vblurShader.destroy(); + combinebloomShader.destroy(); + } + if(isVRInitialised()) { + brightFilterShaderVR.destroy(); + hblurShaderVR.destroy(); + vblurShaderVR.destroy(); + combinebloomShaderVR.destroy(); + } + } + +} diff --git a/src/slaynash/sgengine/deferredRender/ShadowsRenderer.java b/src/slaynash/sgengine/deferredRender/ShadowsRenderer.java new file mode 100644 index 0000000..9ad6e1a --- /dev/null +++ b/src/slaynash/sgengine/deferredRender/ShadowsRenderer.java @@ -0,0 +1,123 @@ +package slaynash.sgengine.deferredRender; + +import java.nio.FloatBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.Map.Entry; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; +import org.lwjgl.opengl.GL13; +import org.lwjgl.opengl.GL30; +import org.lwjgl.opengl.GL32; +import org.lwjgl.util.vector.Matrix4f; +import org.lwjgl.util.vector.Vector3f; + +import slaynash.sgengine.Configuration; +import slaynash.sgengine.shaders.ShaderManager; +import slaynash.sgengine.shaders.ShaderProgram; +import slaynash.sgengine.utils.LightsManager; +import slaynash.sgengine.utils.MatrixUtils; +import slaynash.sgengine.utils.VRUtils; +import slaynash.sgengine.world3d.loader.Ent_PointLight; + +public class ShadowsRenderer { + + public static final int SHADOW_WIDTH = 1024, SHADOW_HEIGHT = 1024; + + private static int[] depthCubemap; + private static int[] depthMapFBO; + + public static void init() { + depthCubemap = new int[Configuration.MAX_LIGHTS]; + depthMapFBO = new int[Configuration.MAX_LIGHTS*6]; + + for(int l=0;l shaderLists) { + + Matrix4f projMat = MatrixUtils.createProjectionMatrix(Configuration.getLightsZNear(), Configuration.getLightsZFar(), 90f, (float)SHADOW_WIDTH/(float)SHADOW_HEIGHT); + + GL11.glViewport(0, 0, SHADOW_WIDTH, SHADOW_HEIGHT); + for(int i=0;i> entry:map.getObjectList().entrySet()){//for each models + if(!entry.getValue().get(0).isCastingShadow()) break; + shadowShader.bindModel(entry.getKey()); + for(DeferredModelRenderer dmr:entry.getValue()){ + shadowShader.bindDatasDirect(dmr.getShaderDatas()); + if(eye == VRUtils.EYE_CENTER) dmr.render(); else dmr.renderVR(eye); + } + } + shadowShader.stop(); + } + + + } + + + for(int i=0;i nextPage; + private static Scene currentScene; + private static Class nextScene; private static boolean close = false; private static boolean render = false; private static Thread renderThread; @@ -37,9 +37,9 @@ public class PageManager { private static boolean initialized = false; - public static void init(final int x, final int y, final boolean fullscreen, Class nextPage){ + public static void init(final int x, final int y, final boolean fullscreen, Class nextScene){ if(Configuration.loadNatives()) LibraryLoader.loadLibraries(); - PageManager.nextPage = nextPage; + SceneManager.nextScene = nextScene; createRenderThread(x,y,fullscreen); renderThread.setName("Render_Thread"); @@ -53,8 +53,8 @@ public static void init(final int x, final int y, final boolean fullscreen, Clas } } - public static void init(Class nextPage){ - init(1280, 720, false, nextPage); + public static void init(Class nextScene){ + init(1280, 720, false, nextScene); } private static void createRenderThread(final int x, final int y, final boolean fullscreen) { @@ -66,7 +66,7 @@ public void run() { DisplayManager.createDisplay(x,y,fullscreen); if(Configuration.isVR()) if(!VRUtils.initVR()) { Configuration.enableVR(false); - System.err.println("[PageManager] Unable to start VR: "+VRUtils.initStatus); + System.err.println("[SceneManager] Unable to start VR: "+VRUtils.initStatus); } TextureManager.init(); UserInputUtil.initController(); @@ -74,14 +74,14 @@ public void run() { AudioManager.init(); DeferredRenderer.init(); EntityManager.init(); - SGELabelPage label = new SGELabelPage(); - currentPage = label; + SGETitleScene label = new SGETitleScene(); + currentScene = label; label.init(); label.start(); render = true; initialized = true; throwInitializedEvent(); - LogSystem.out_println("[PageManager] Starting render"); + LogSystem.out_println("[SceneManager] Starting render"); while(true){ while(render){ long pinnedTime = System.nanoTime(); @@ -89,7 +89,7 @@ public void run() { render = false; close = true; } - else if(currentPage != label && nextPage != null) { + else if(currentScene != label && nextScene != null) { render = false; break; } @@ -99,10 +99,10 @@ else if(currentPage != label && nextPage != null) { UserInputUtil.update(); KeyboardControlManager.update(); if(Configuration.isControllersEnabled()) ControllersControlManager.update(); - if(currentPage != label && Configuration.isCollisionManager3dEnabled()) CollisionManager3d.update(); - if(currentPage != label && Configuration.isCollisionManager2dEnabled()) CollisionManager2d.update(); + if(currentScene != label && Configuration.isCollisionManager3dEnabled()) CollisionManager3d.update(); + if(currentScene != label && Configuration.isCollisionManager2dEnabled()) CollisionManager2d.update(); if(Configuration.isSelfEntitiesUpdateEnabled()) EntityManager.updateEntities(); - currentPage.update(); + currentScene.update(); if(Configuration.isHandRendered()) PlayerWeaponsManager.update(); if(Configuration.getGUIEnabled()) GUIManager.update(); if(Configuration.isUsingTimingDebug()) { @@ -114,7 +114,7 @@ else if(currentPage != label && nextPage != null) { if(Configuration.isVR()) VRUtils.setCurrentRenderEye(VRUtils.EYE_CENTER); - currentPage.render(); + currentScene.render(); if(Configuration.isUsingTimingDebug()) { GL11.glFinish(); LogSystem.out_println("[TIMING] Render time [main]: "+((System.nanoTime()-startTime)/1e6f)+"ms"); @@ -135,7 +135,7 @@ else if(currentPage != label && nextPage != null) { PlayerWeaponsManager.renderWeapon(); } if(Configuration.getGUIEnabled()) GUIManager.render(); - int err = 0; if((err = GL11.glGetError()) != 0) LogSystem.out_println("[PageManager] GUI Render error: OpenGL Error "+err); + int err = 0; if((err = GL11.glGetError()) != 0) LogSystem.out_println("[SceneManager] GUI Render error: OpenGL Error "+err); Configuration.useDeferredRender(iudr); if(Configuration.isUsingTimingDebug()) { GL11.glFinish(); @@ -145,7 +145,7 @@ else if(currentPage != label && nextPage != null) { if(Configuration.isVR()){ VRUtils.setCurrentRenderEye(VRUtils.EYE_LEFT); - currentPage.renderVR(VRUtils.EYE_LEFT); + currentScene.renderVR(VRUtils.EYE_LEFT); if(Configuration.isUsingTimingDebug()) { GL11.glFinish(); LogSystem.out_println("[TIMING] VR Render time [Left][Main]: "+((System.nanoTime()-startTime)/1e6f)+"ms"); @@ -165,7 +165,7 @@ else if(currentPage != label && nextPage != null) { startTime = System.nanoTime(); } VRUtils.setCurrentRenderEye(VRUtils.EYE_RIGHT); - currentPage.renderVR(VRUtils.EYE_RIGHT); + currentScene.renderVR(VRUtils.EYE_RIGHT); if(Configuration.isUsingTimingDebug()) { GL11.glFinish(); LogSystem.out_println("[TIMING] VR Render time [Right][Main]: "+((System.nanoTime()-startTime)/1e6f)+"ms"); @@ -225,16 +225,16 @@ else if(currentPage != label && nextPage != null) { VRUtils.sendFramesToCompositor(); VRUtils.updatePose(); } - if(currentPage == label && label.isRenderingDone()){ - LogSystem.out_println("[PageManager] Label rendering done"); + if(currentScene == label && label.isRenderingDone()){ + LogSystem.out_println("[SceneManager] Label rendering done"); render = false; - if(nextPage == null) close = true; + if(nextScene == null) close = true; firstRenderNotLabel = true; } } } if(close){ - LogSystem.out_println("[PageManager] Stopping engine..."); + LogSystem.out_println("[SceneManager] Stopping engine..."); stop(); UserInputUtil.exitControls(); if(Configuration.isVR()) VRUtils.stop(); @@ -246,8 +246,8 @@ else if(currentPage != label && nextPage != null) { break; } - else if(nextPage != null){ - if(currentPage == null){ + else if(nextScene != null){ + if(currentScene == null){ start(); } else{ @@ -268,39 +268,39 @@ private static void deferredRenderCheck(int eye){ private static void start() { try { - currentPage = nextPage.newInstance(); - nextPage = null; + currentScene = nextScene.newInstance(); + nextScene = null; } catch (InstantiationException e) {e.printStackTrace(LogSystem.getErrStream());} catch (IllegalAccessException e) {e.printStackTrace(LogSystem.getErrStream());} render = true; - currentPage.init(); + currentScene.init(); if(firstRenderNotLabel && Configuration.isCollisionManager3dEnabled()) CollisionManager3d.reload(); if(firstRenderNotLabel && Configuration.isCollisionManager2dEnabled()) CollisionManager2d.reload(); - currentPage.start(); + currentScene.start(); if(firstRenderNotLabel && Configuration.isCollisionManager3dEnabled()) CollisionManager3d.start(); if(firstRenderNotLabel && Configuration.isCollisionManager2dEnabled()) CollisionManager2d.start(); - throwPageStartedEvent(); + throwSceneStartedEvent(); } /** * End current render loop, clear the current GamePage and start a new GamePage instance with his render * @param page is the GamePage to start */ - public static void changePage(Class page){ - nextPage = page; + public static void changePage(Class page){ + nextScene = page; } private static void changePage(){ - LogSystem.out_println("[PageManager] Changing page from "+currentPage.getClass()+" to "+nextPage); + LogSystem.out_println("[SceneManager] Changing page from "+currentScene.getClass()+" to "+nextScene); stop(); start(); - throwPageChangedEvent(); + throwSceneChangedEvent(); } private static void stop(){ - currentPage.stop(); - throwPageClosedEvent(); + currentScene.stop(); + throwSceneClosedEvent(); } /** @@ -312,46 +312,42 @@ public static void close(){ } public static void resize() { - if(currentPage != null)currentPage.resize(); + if(currentScene != null)currentScene.resize(); } - public static void addPageManagerListener(PageManagerListener listener) { - listeners.add(PageManagerListener.class, listener); + public static void addSceneManagerListener(SceneManagerListener listener) { + listeners.add(SceneManagerListener.class, listener); } - public static void removePageManagerListener(PageManagerListener listener) { - listeners.remove(PageManagerListener.class, listener); + public static void removeSceneManagerListener(SceneManagerListener listener) { + listeners.remove(SceneManagerListener.class, listener); } - public static PageManagerListener[] getPageManagerListener() { - return listeners.getListeners(PageManagerListener.class); + public static SceneManagerListener[] getSceneManagerListener() { + return listeners.getListeners(SceneManagerListener.class); } private static void throwExitedEvent(){ - PageManagerEvent event = new PageManagerEvent(currentPage); - for(PageManagerListener l:listeners.getListeners(PageManagerListener.class)) l.exited(event); + SceneManagerEvent event = new SceneManagerEvent(currentScene); + for(SceneManagerListener l:listeners.getListeners(SceneManagerListener.class)) l.exited(event); } private static void throwInitializedEvent(){ - PageManagerEvent event = new PageManagerEvent(null); - for(PageManagerListener l:listeners.getListeners(PageManagerListener.class)) l.initialized(event); + SceneManagerEvent event = new SceneManagerEvent(null); + for(SceneManagerListener l:listeners.getListeners(SceneManagerListener.class)) l.initialized(event); } - private static void throwPageStartedEvent(){ - PageManagerEvent event = new PageManagerEvent(null); - for(PageManagerListener l:listeners.getListeners(PageManagerListener.class)) l.pageStarted(event); + private static void throwSceneStartedEvent(){ + SceneManagerEvent event = new SceneManagerEvent(null); + for(SceneManagerListener l:listeners.getListeners(SceneManagerListener.class)) l.sceneStarted(event); } - private static void throwPageChangedEvent(){ - PageManagerEvent event = new PageManagerEvent(null); - for(PageManagerListener l:listeners.getListeners(PageManagerListener.class)) l.pageChanged(event); + private static void throwSceneChangedEvent(){ + SceneManagerEvent event = new SceneManagerEvent(null); + for(SceneManagerListener l:listeners.getListeners(SceneManagerListener.class)) l.sceneChanged(event); } - private static void throwPageClosedEvent(){ - PageManagerEvent event = new PageManagerEvent(null); - for(PageManagerListener l:listeners.getListeners(PageManagerListener.class)) l.pageClosed(event); + private static void throwSceneClosedEvent(){ + SceneManagerEvent event = new SceneManagerEvent(null); + for(SceneManagerListener l:listeners.getListeners(SceneManagerListener.class)) l.sceneClosed(event); } - public static void setPageName(String title) { - Display.setTitle(title); - } - public static boolean isInitialized() { return initialized; } diff --git a/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerAdapter.java b/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerAdapter.java deleted file mode 100644 index ac367d0..0000000 --- a/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerAdapter.java +++ /dev/null @@ -1,10 +0,0 @@ -package slaynash.sgengine.utils.pageManagerEvent; - -public abstract class PageManagerAdapter implements PageManagerListener{ - @Override - public void pageChanged(PageManagerEvent e) {} - @Override - public void pageStarted(PageManagerEvent e) {} - @Override - public void pageClosed(PageManagerEvent e) {} -} diff --git a/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerEvent.java b/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerEvent.java deleted file mode 100644 index 8b573d1..0000000 --- a/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerEvent.java +++ /dev/null @@ -1,17 +0,0 @@ -package slaynash.sgengine.utils.pageManagerEvent; - -import slaynash.sgengine.utils.RenderablePage; - -public class PageManagerEvent { - - private RenderablePage page; - - public PageManagerEvent(RenderablePage page) { - this.page = page; - } - - public RenderablePage getPage(){ - return page; - } - -} diff --git a/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerListener.java b/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerListener.java deleted file mode 100644 index e8d7595..0000000 --- a/src/slaynash/sgengine/utils/pageManagerEvent/PageManagerListener.java +++ /dev/null @@ -1,11 +0,0 @@ -package slaynash.sgengine.utils.pageManagerEvent; - -import java.util.EventListener; - -public interface PageManagerListener extends EventListener{ - void pageChanged(PageManagerEvent e); - void pageStarted(PageManagerEvent e); - void pageClosed(PageManagerEvent e); - void initialized(PageManagerEvent e); - void exited(PageManagerEvent e); -} diff --git a/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerAdapter.java b/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerAdapter.java new file mode 100644 index 0000000..4e0598f --- /dev/null +++ b/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerAdapter.java @@ -0,0 +1,10 @@ +package slaynash.sgengine.utils.sceneManagerEvent; + +public abstract class SceneManagerAdapter implements SceneManagerListener{ + @Override + public void sceneChanged(SceneManagerEvent e) {} + @Override + public void sceneStarted(SceneManagerEvent e) {} + @Override + public void sceneClosed(SceneManagerEvent e) {} +} diff --git a/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerEvent.java b/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerEvent.java new file mode 100644 index 0000000..a46a1b8 --- /dev/null +++ b/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerEvent.java @@ -0,0 +1,17 @@ +package slaynash.sgengine.utils.sceneManagerEvent; + +import slaynash.sgengine.utils.Scene; + +public class SceneManagerEvent { + + private Scene page; + + public SceneManagerEvent(Scene page) { + this.page = page; + } + + public Scene getPage(){ + return page; + } + +} diff --git a/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerListener.java b/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerListener.java new file mode 100644 index 0000000..d209f08 --- /dev/null +++ b/src/slaynash/sgengine/utils/sceneManagerEvent/SceneManagerListener.java @@ -0,0 +1,11 @@ +package slaynash.sgengine.utils.sceneManagerEvent; + +import java.util.EventListener; + +public interface SceneManagerListener extends EventListener{ + void sceneChanged(SceneManagerEvent e); + void sceneStarted(SceneManagerEvent e); + void sceneClosed(SceneManagerEvent e); + void initialized(SceneManagerEvent e); + void exited(SceneManagerEvent e); +}