From 67f4cae2b72c4a61d94678db7421fd75f9731f54 Mon Sep 17 00:00:00 2001 From: Lubos Lenco Date: Mon, 7 Dec 2015 21:05:27 +0100 Subject: [PATCH] Custom material shaders --- blender/__pycache__/project.cpython-34.pyc | Bin 11532 -> 11236 bytes blender/__pycache__/props.cpython-34.pyc | Bin 2491 -> 2758 bytes blender/__pycache__/scene.cpython-34.pyc | Bin 0 -> 36405 bytes blender/__pycache__/write_data.cpython-34.pyc | Bin 0 -> 1967 bytes .../write_main.cpython-34.pyc} | Bin 1520 -> 1729 bytes blender/project.py | 18 +----- blender/props.py | 9 ++- blender/scene.py | 15 +++-- blender/write_data.py | 59 ++++++++++++++++++ 9 files changed, 78 insertions(+), 23 deletions(-) create mode 100644 blender/__pycache__/scene.cpython-34.pyc create mode 100644 blender/__pycache__/write_data.cpython-34.pyc rename blender/{write_main.py => __pycache__/write_main.cpython-34.pyc} (55%) create mode 100644 blender/write_data.py diff --git a/blender/__pycache__/project.cpython-34.pyc b/blender/__pycache__/project.cpython-34.pyc index da131c7d84df7cd52bf554faff78fb86ea68e1f0..d536de1a894604379ed8bf90eed266e63f4e8d62 100644 GIT binary patch delta 1789 zcmb7EZETZO6h60KbluzaYwfzWtYveQw_Bz$!9<({)ac?AAz)2v2zK0etX)~_X~`I( zC|msDR5bSwYK#iwQ;Z=UN+JY|e@y(upKk(*QT$;H3DLwq{_vbzAR{Cu_RV?v-1FRX z?mh24_kF$a>oa}V48QNM%T|775a1VB@^cYiM^^vw?Y=$x0HlD54+=hzPLM8`11PkE zbc6J0Zh%|{(yO^29+Pb#eLNtvoKWt7asXzXPzaJnafa3mm~}uQ1kw+(Lx+YzQcM73 z5at9FA|Oc(!#-ZFlS0YSsY5$&rj6>fG18(SV_J*du62>t1v0L+`0ZMpv~G|IttD>P z$e#q6VkuupfLso;hX)1nra@*jPk~$kvR8AO&Oq0XuGO4Ysz%DYF*E~Bzi^o-oG zwUZ?MNw#!rCuwV&)rIuv&H5H@)#p+7W$viY^9dzz2(>kxRA)2SSHDX`GxWa-qEoxF zB6iOQ6lr^R7AGxP!a9D)L;u*WQblg4N^1*Rmg#I&r%&<_SLdFgS%w~;qMFx zyhLdB>MLwJ>oawHpB$}z+0Sen0i8^3W~heMS{>)u`5ME=3_I1(pt-5W^dQ3mf$e>& zW?`{WMda&>eC3dv8@V}=dj$Ci@pA@#b;$1oxj5vV<0ZQ5UFyPMKn$xN24ki$97fp4 f8tzmo;x#gXVI!7mqbHE^868H{=r!E*7>4^_UH_I8 delta 2035 zcmZuxZETZO6u!4#Tf28{*RJcw%GPac?OU?VX#63A1^i+GMaWRJiNSXFrR&zU^Sm8n zld-@c#zaxMKm4(PAA}DPC8mHzh#2(;e>B8Dm?jz%4gSIeO*A1Pdd@9_ZPGXQd7pcq zbI!fzocs2-?XRag{?O`OPhK;gyV%XxuWZrJhI}0k^V_#Orf028*w_KaQZ6R!OgI#; zW1@zMTE#WCK{%Ok(FD=3vXOc=;%0MJmhzy6wwls3HfLceFBA1lxRq-I6X@e%!pjbD zmhv%yD?TOp(bLaFWp;ByZtYA#Wwp3?{IMAu4e~#;YF4rBCp0p5y#R(WP%tZVSA$_qtoE8Qsc~%+r z4pvuslgVYK>rK-rp=I^`fBmUk2GTH0mt5H}++!<_8-Ps*E-0eL-~#lY`2x5#|N$#2SC zk*E1-xp!5t2~MHM4IHKeLE{cQ6P!Y)6SW`Wg3f{bTJ5KCa!Y>G++X(*GT1_JC&C%z zf8$sj;f&gLU-XJkMX7@Za_|udc_bEm=w3b**QAljKylJE0H`{;y_(f}vR;&$Y>4_D zbPg+*msbodKS&LHjM~3Uj<+_;+mQ|OaLcBJ98TWN!6%)q_sQWby1Mz&9L~zw*4w@# zsOSyL&%d-EpT?RV_yFxHwPWc~L*&4OV>GSLOyu%nb5R)Ez%X=cH5=8V#HexwZl{)C?ZsxccbeLIF2hR3lw0M^b-U? z5K#M+k#@=7JL0@t_N;uCdua<8A~;8IUY0sdui9jW<`f^s)a#c0$&qcR?hicVH6@XSI|uCBEpLc1!vsLTR2>l z5Ff4o0u|k&5`r)3^nnYwl38rq#NmSUB`W;9ypibPB^lNG9a#$dntVx*I%r$?ihNry zAf zeCchl7he^tIc36o$f|ebp!_A-SobQ;-yrxz+E(dXO``JzClM;O&y3R_X%W=t2lNH0 z+Y59Lfo=s*%iuEtDiu%-fRX_^DO|;mx2u0OQjOnxTvcw-d|F(yN2C5)t=qFkYl=GY S@kCvkTMKCInjIfabNmO=r|E_O diff --git a/blender/__pycache__/props.cpython-34.pyc b/blender/__pycache__/props.cpython-34.pyc index 8a0fb3a0c676a99c7e2b72f3d63aa411ca12d9f2..9f400f205d188d302c610e39b9c31bb797912234 100644 GIT binary patch delta 910 zcmZvaOHb5L6vxl)YueHQVdOPB3?UGx4^V@Igq4CJF>wOHkf@7EL$AX$OoyBn9}^4< zHtz4rr60kSiSGRn-T4Jfj0?A(b4NjpZSF58=W);Jzvpx1%c%b?DEpgVJh zcRSPBeiTbAtVYz41@wjtf_WxS7&rPlu$ws`=+CHDfJ}3<5o3_ODkxady>5>zx=?+xCQ*R*78`GwQAVUd*ey zHD1LUm5kHLd_o|c{%c@OJ#(-!MNX^}3bzyG65G*%`fiO0seU@EC&vaP795jcCY+L# zWFNmt$+$uY9h_m?VU!rR7_$sc3N4&tTZcHaFliX{pR<$4 z#sS7W;X0kHFM}rn2XY%5CT!D5Wj%SPzp0vCpiYYZ;O8;qNbMTXXC z8JEcBDgM=o{d;uI9)qlPI@xVC~!O!1BnZ?G!s?-Jg`QInMD9GCU8wvz0E3r304@qTv|E( P0TiZcrMx+FIIw>KKc=s* delta 619 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 literal 0 HcmV?d00001 diff --git a/blender/__pycache__/write_data.cpython-34.pyc b/blender/__pycache__/write_data.cpython-34.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bdbe91ae2871ba04fc03f1b657f6f8fbdcf9043f GIT binary patch literal 1967 zcmb7F&2QX96d&(bVs}F*5`^5WqRMuZ+8}WY1wud|0im#kq9U}K^-R{@jz2UrZn6vE zQm%->(Z zF1+eZSQz{)A_#f7q%HE$BCJDLm;4BPAbN!L8@h|iqhRnSSd!BiS9~mZZ@_y3uX+a- z-FO8bPdeo119C~o_k_&AYnSK_nRUqwT=vL5xZU4l1G4wTBGvj)$A!Te-R5Iqu_gVtwtKx(*E}x2{kzqs!2Wy(gN^uQ}=6_TENji~K&V5f* ze9d$zis!N5Y6^k=mqtP__@okoYt(Qg*Okn#Dsbck{km6_Jg@ubGS$59PRe=RV^q_6 za9&8kRAANC*)K#oP@KO%i@sElT_mbWp`!PTxXO60RWzz5BF%V|a3PAwgqLy^J&iA# z2%bY_qUM}2o)E%OyJp+AZKnDNhHY4g^^!H{yzIy!(AO}7j0Q750dWm87teti-CqOK z7TE_J?XhjLw;{7znFF$G2)uy^9Bv?R=X9~#!Xo;Vrg@lLNW3_Uk2ir>()baba`(uI z1y#yLefK-ZR+{QGcGFy>Id@m!if{zTwlIBh3DbMV(c-pu^bG3l3i#7eFNHo7s0k)OV8Yy0;0+1WPsC*hPqiCB9Z!YS7u2;N+b_vZKM6dUJzsO1IU zy#6g7ZVXl9c-1tP9Hvxj?R!SS#B1AT7h<$v<7s}OqZxfnTP@?aRZ=nr9SHdvx5&Xi zn`6ItoX{NLcXyf6nkHtxA;ly@TEf6!CrK)pZ;opUYF|QPw;J-Qq$}0)XqFW)mc2uS zi`1qETqq7!4aaX;Idjm}I;dKm230UF!V#pwvoOt5?YHw63w?Ms+ZuE)cLubF?p0%3 zc-r^@K#U%jrQgEpi=r^mU1C6&&ZQF!WDme2aX3l%FcP_i3y!I}tF#O(X(Iziq*?I0 zRy$_4;ca*Y_GYYgV5~XutMVprf?ngT?i8vSa}9IFOXII`wf$CBuuAZ^@e`#mgrPO; H4sZSo(q}3@ literal 0 HcmV?d00001 diff --git a/blender/write_main.py b/blender/__pycache__/write_main.cpython-34.pyc similarity index 55% rename from blender/write_main.py rename to blender/__pycache__/write_main.cpython-34.pyc index 3f6a1ae18942c80b6a1a6de926871451b3d5eca0..5739012c03ab25f3447bdbe2a359c28f9076c853 100644 GIT binary patch delta 629 zcmZuv!EO^V5FPJs(lp&PRS$$nJ>*7KNcaa@gj6JYXqTc0ih4obwMjO3*Ol#6+Nf2E z+ABhck3gJy;0yQ-AGmPhf_mn}Y*eCxusqK*Z=UTL%hxMkTeF{GtGRP7UR>7zzQe8I zq5lZY^bt5t0utbG;S)F{z&+qTTq2JSfk71fKsCf^h1DQvA=);Yd52)gQT=)?t_S?1~!r6o7cH&#c)k=LI=uVQ__p3>(=XhUV0C_^8sw9G|e4IPw; z%yL0TLP|wVYGq)hWs6-*Dpppy9%rEBRQdS5r$}CA$@J-Cj)61yfN=Z#qCTGhg~VcoG>F+C^V9Uec4}}bDJe}BWArlu(hAxjx9X)NmL%$x=NILq z6h|AxMyor!2NdOJr6!jIBqnDkrl+dM0u_R^)iP@96QRv7F&9~nf^B$a3edH-ATxj_ t6_*rg;I$U4Ts>A3YHJ;%yuC+iW_m^m@kT(@!_C-i$h4lB6==OC7XWsHfyMv; diff --git a/blender/project.py b/blender/project.py index 578a1bef..e6188ef5 100755 --- a/blender/project.py +++ b/blender/project.py @@ -8,6 +8,7 @@ from bpy.props import * import subprocess import atexit import webbrowser +import write_data def defaultSettings(): wrd = bpy.data.worlds[0] @@ -134,23 +135,10 @@ def exportGameData(): a.armature.location.z = a.z # Write khafile.js - with open('khafile.js', 'w') as f: - f.write( -"""// Auto-generated -var project = new Project('""" + bpy.data.worlds[0]['CGProjectName'] + """'); - -project.addSources('Sources'); -project.addShaders('Sources/Shaders/**'); -project.addAssets('Assets/**'); -project.addLibrary('lue'); -project.addLibrary('cyclesgame'); -project.addLibrary('haxebullet'); - -return project; -""") + write_data.write_khafilejs() # Write Main.hx - #write_main() + write_data.write_main() def buildProject(self, build_type=0): # Save scripts diff --git a/blender/props.py b/blender/props.py index bfa297ad..e3942373 100755 --- a/blender/props.py +++ b/blender/props.py @@ -15,9 +15,9 @@ def initObjectProperties(): bpy.types.Object.instanced_children = bpy.props.BoolProperty(name="Instanced children", default=False) bpy.types.Material.receive_shadow = bpy.props.BoolProperty(name="Receive shadow", default=True) bpy.types.Material.alpha_test = bpy.props.BoolProperty(name="Alpha test", default=False) + bpy.types.Material.custom_shader = bpy.props.BoolProperty(name="Custom shader", default=False) + bpy.types.Material.custom_shader_name = bpy.props.StringProperty(name="Name", default="") bpy.types.Material.export_tangents = bpy.props.BoolProperty(name="Export tangents", default=False) - bpy.app.handlers.scene_update_post.append(cb_scene_update) - #bpy.app.handlers.scene_update_post.remove(cb_scene_update) # Menu in object region class ToolsPropsPanel(bpy.types.Panel): @@ -46,11 +46,16 @@ class MatsPropsPanel(bpy.types.Panel): layout.prop(mat, 'receive_shadow') layout.prop(mat, 'alpha_test') + layout.prop(mat, 'custom_shader') + if mat.custom_shader: + layout.prop(mat, 'custom_shader_name') # Registration def register(): bpy.utils.register_module(__name__) initObjectProperties() + bpy.app.handlers.scene_update_post.append(cb_scene_update) def unregister(): + bpy.app.handlers.scene_update_post.remove(cb_scene_update) bpy.utils.unregister_module(__name__) diff --git a/blender/scene.py b/blender/scene.py index 9f2d08d1..8c42099a 100644 --- a/blender/scene.py +++ b/blender/scene.py @@ -2043,12 +2043,15 @@ class LueExporter(bpy.types.Operator, ExportHelper): ob.geometry_cached = False break - # Merge duplicates and sort - defs = sorted(list(set(defs))) - # Select correct shader variant - o.shader = "blender_resource/blender" - for d in defs: - o.shader += d + if material.custom_shader == False: + # Merge duplicates and sort + defs = sorted(list(set(defs))) + # Select correct shader variant + o.shader = "blender_resource/blender" + for d in defs: + o.shader += d + else: + o.shader = material.custom_shader_name #intensity = material.specular_intensity #specular = [material.specular_color[0] * intensity, material.specular_color[1] * intensity, material.specular_color[2] * intensity] diff --git a/blender/write_data.py b/blender/write_data.py new file mode 100644 index 00000000..b7320f5d --- /dev/null +++ b/blender/write_data.py @@ -0,0 +1,59 @@ +import bpy +import os + +# Write khafile.js +def write_khafilejs(): + with open('khafile.js', 'w') as f: + f.write( +"""// Auto-generated +var project = new Project('""" + bpy.data.worlds[0]['CGProjectName'] + """'); + +project.addSources('Sources'); +project.addShaders('Sources/Shaders/**'); +project.addAssets('Assets/**'); +project.addLibrary('lue'); +project.addLibrary('cyclesgame'); +project.addLibrary('haxebullet'); + +return project; +""") + +# Write Main.hx +def write_main(): + #if not os.path.isfile('Sources/Main.hx'): + with open('Sources/Main.hx', 'w') as f: + f.write( +"""// Auto-generated +package ; +class Main { + static inline var projectName = '""" + bpy.data.worlds[0]['CGProjectPackage'] + """'; + static inline var projectWidth = """ + str(bpy.data.worlds[0]['CGProjectWidth']) + """; + static inline var projectHeight = """ + str(bpy.data.worlds[0]['CGProjectHeight']) + """; + public static function main() { + lue.sys.CompileTime.importPackage('lue.trait'); + lue.sys.CompileTime.importPackage('cycles.trait'); + lue.sys.CompileTime.importPackage('""" + bpy.data.worlds[0]['CGProjectName'] + """'); + #if js + untyped __js__(" + function loadScript(url, callback) { + var head = document.getElementsByTagName('head')[0]; + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = url; + script.onreadystatechange = callback; + script.onload = callback; + head.appendChild(script); + } + "); + untyped loadScript('ammo.js', start); + #else + start(); + #end + } + static function start() { + kha.System.init(projectName, projectWidth, projectHeight, function() { + new lue.App(cycles.Root); + }); + } +} +""")