Hi Devils Child
Hi All
This is a light optimization , in the "sample 5 " is increment 10-15%
the system is improve create a check for control object in range light, if object in range calculate, if not jump
;)
Bye
Hi All
This is a light optimization , in the "sample 5 " is increment 10-15%
Function CreateVolume(light, parallel = False) ;===> RangeLight# = 10 ; is a range light, all object over range is jump ;===> light_x# = EntityX(light, True) * (1 + parallel * 1000000) light_y# = EntityY(light, True) * (1 + parallel * 1000000) light_z# = EntityZ(light, True) * (1 + parallel * 1000000) volume_lenght = RangeLight ;===> For etem.ETE_Mesh = Each ETE_Mesh ;===> cnt_tris = etem\cnt_tris For v = 0 To cnt_tris ;===> etet.ETE_Triangle = TriangleClone(v) CloneTriangle(etet, etem\tri[v]) ;===> v1.Point3D = etet\v1 ;===> TFormPoint v1\x#, v1\y#, v1\z#, etem\ent, 0 v1\x# = TFormedX() v1\y# = TFormedY() v1\z# = TFormedZ() ;===> TFormNormal etet\nx#, etet\ny#, etet\nz#, etem\ent, 0 normlight_x# = (v1\x# - light_x#) * TFormedX() normlight_y# = (v1\y# - light_y#) * TFormedY() normlight_z# = (v1\z# - light_z#) * TFormedZ() ;===> If (normlight_x# + normlight_y# + normlight_z#) < 0 Then ;===> etet\tri = -1 Else ;===> v2.Point3D = etet\v2 TFormPoint v2\x#, v2\y#, v2\z#, etem\ent, 0 v2\x# = TFormedX() v2\y# = TFormedY() v2\z# = TFormedZ() ;===> v3.Point3D = etet\v3 TFormPoint v3\x#, v3\y#, v3\z#, etem\ent, 0 v3\x# = TFormedX() v3\y# = TFormedY() v3\z# = TFormedZ() ;===> EndIf ;===> Next ;===> For v = 0 To cnt_tris etet = TriangleClone(v) If etet\tri => 0 Then ta = etet\ta tb = etet\tb tc = etet\tc If ta > -1 Then check1 = TriangleClone(ta)\tri Else check1 = -1 If tb > -1 Then check2 = TriangleClone(tb)\tri Else check2 = -1 If tc > -1 Then check3 = TriangleClone(tc)\tri Else check3 = -1 If check1 < 0 Or check2 < 0 Or check3 < 0 Then v1 = etet\v1 v2 = etet\v2 v3 = etet\v3 If check1 < 0 Then rax# = v1\x# + (v1\x# - light_x#) * volume_lenght ray# = v1\y# + (v1\y# - light_y#) * volume_lenght raz# = v1\z# + (v1\z# - light_z#) * volume_lenght rbx# = v2\x# + (v2\x# - light_x#) * volume_lenght rby# = v2\y# + (v2\y# - light_y#) * volume_lenght rbz# = v2\z# + (v2\z# - light_z#) * volume_lenght vert1 = AddVertex(VolumeSurf, v1\x#, v1\y#, v1\z#) vert2 = AddVertex(VolumeSurf, rax#, ray#, raz#) vert3 = AddVertex(VolumeSurf, rbx#, rby#, rbz#) vert4 = AddVertex(VolumeSurf, v2\x#, v2\y#, v2\z#) AddTriangle(VolumeSurf, vert1, vert2, vert3) AddTriangle(VolumeSurf, vert1, vert3, vert4) EndIf If check2 < 0 Then rbx# = v2\x# + (v2\x# - light_x#) * volume_lenght rby# = v2\y# + (v2\y# - light_y#) * volume_lenght rbz# = v2\z# + (v2\z# - light_z#) * volume_lenght rcx# = v3\x# + (v3\x# - light_x#) * volume_lenght rcy# = v3\y# + (v3\y# - light_y#) * volume_lenght rcz# = v3\z# + (v3\z# - light_z#) * volume_lenght vert1 = AddVertex(VolumeSurf, v2\x#, v2\y#, v2\z#) vert2 = AddVertex(VolumeSurf, rbx#, rby#, rbz#) vert3 = AddVertex(VolumeSurf, rcx#, rcy#, rcz#) vert4 = AddVertex(VolumeSurf, v3\x#, v3\y#, v3\z#) AddTriangle(VolumeSurf, vert1, vert2, vert3) AddTriangle(VolumeSurf, vert1, vert3, vert4) EndIf If check3 < 0 Then rax# = v1\x# + (v1\x# - light_x#) * volume_lenght ray# = v1\y# + (v1\y# - light_y#) * volume_lenght raz# = v1\z# + (v1\z# - light_z#) * volume_lenght rcx# = v3\x# + (v3\x# - light_x#) * volume_lenght rcy# = v3\y# + (v3\y# - light_y#) * volume_lenght rcz# = v3\z# + (v3\z# - light_z#) * volume_lenght vert1 = AddVertex(VolumeSurf, v1\x#, v1\y#, v1\z#) vert2 = AddVertex(VolumeSurf, rax#, ray#, raz#) vert3 = AddVertex(VolumeSurf, rcx#, rcy#, rcz#) vert4 = AddVertex(VolumeSurf, v3\x#, v3\y#, v3\z#) AddTriangle(VolumeSurf, vert1, vert3, vert2) AddTriangle(VolumeSurf, vert1, vert4, vert3) EndIf EndIf EndIf Next Next End Function
the system is improve create a check for control object in range light, if object in range calculate, if not jump
;)
Bye