Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Agent Williams

6
Posts
1
Topics
1
Following
A member registered May 29, 2020 · View creator page →

Recent community posts

Thanks! Camerazoom for edge seam fix? ...uhm, well right now I got a solution working with a baked static ambient cubemap. So it looks quite decent for static lighting. But have to figure out how to make the ambient cubemap smooth. Right now its just a 2x12 image with 2x2 sided cubemap. So the lower row is mostly black pixels and the upper row is the sky color. The front facing side is having brighter pixels to simulate the light direction. I used the ATI cubemap gen to generate the image from the skybox image. It works very good and it makes all the models look modern. I will post a small article about it, once I have finished some fun stuff with it.

I do understand your point of view sir. I do like Unity 5 and I have been using it ever since it released.

My personal preference right now is b3d because it is way faster in terms of prototyping. In unity yo often get lost in the editor environment and forget about the actual coding. This causes a major setback and it obviously generates automated code that is not always as effective as intended. 

In basic you have the option to write your own advanced interpreter actually, with object oriented programming in mind. There are several C# like interpreters for b3d allready. The advantage of native C# is that you get access to the system .NET classses, which is great indeed.

Also with unity you have a closed asset system which is not ideal for my case. I prefer to manage my own files the way I want. The build prints are also way smaller with b3d. A Unity project usualy weights around 1-5 gb because of all the meta data. With b3d it only depends on how many files you have and how much they weight.

hmm interesting. Thank you for the paper. I will take a look at it. But in the meantime I actually figured out a small workaround for it. Just need to figure out whats the fastest way to solve this issue. After all I am drawing just 6 textures, I can play around with them hehehe... I am planning to use nearby pixels approach. it should actually work...

Yes, Sir, Unity 5.6 is great. It has all the features that you need. Most importantly I work offline, so Blitz3d is reliable, I can boot it up whenever I want to. Unity requires internet connection etc. to load the license and as soon as something changes in the services of your computer, it requires internet connection again. That is such a waste of talent... Secondly my technological knowhow is at a level where I can build my own world editors and integrated development environments. So I personally see Blitz3D more advanced. But it requires more effort. Thats the beauty of it.

Hello guys! Thanks for the amazing program. It's what got me into game development and software engineering back in 2004-2005. Many years later I found myself struggling with unity's slow and heavy development cycle. Then I decided to return back to Blitz3D and I am glad I did so. I have been advancing this amazing piece of software to quite modern standards. But right now I am facing a problem with texture flags. Can anyone help me? I need some sort of a combined- or a special flag. Somebody mentioned a flag 49 for my case, but then the mesh disappears completely.. Let me explain. I want to create a low resolution cubemap, but it causes seam issues. I remember there was a edge seam fixup solution somewhere, but I don't remember if it was in Blitz3D or Unity. Anyhow, how to approach this problem? Do I have to modify the cubemap texture at runtime, or whats the complete set of texture flags? Thanks. And many thanks to you Mark, without your amazing program, my life would be completely different.
Note: my first project involved Tokamak physics and I have been working with physics ever since. I am mostly focused on realistic vehicle simulations. And I am once again playing around with tokamak and physx. Then I decided to upgrade the visuals to pbr standards, and this is where I got the edge seam problem. 

Here are some screenshots of my pbr solution. It's using Xors3D for shadowing only, everything else is directly portable to original B3D DX7.

The issue is not very visible, but at certain angles the edge seam is very harsh. Take a look on the second image, front left tire, it has a very sharp edge, while it should be blurred instead.


-Ravel. The author of MoDyEn physics extension for Unity3D

(6 edits)

Hello folks my name is Ravel. 

Blitz3d was my first programming language, I started in 2004 with my journey.  I moved over to Unity back in 2012 and continued to advance exponentially, I learned C# and C++ and created a vehicle simulation system called MoDyEn.
Now I returned to Blitz3d, just because its such an awesome language and I wanted to try something new with it. So I began remastering NFSU for my own as for now. So the first problem I came about, was that, at night (that is the generic setting for this game) I soon reached the light limit of 8 lights, which seems to be the limit in Unity as well actually. So I began thinking, how other games surpass this limitation and create beautiful night scenery, with dozens of real-time lights. Soon I understood, that most of the games actually don't use real lights at all, but simply switch on and of from lights near by and bake a light-map to present a lit scenery. 

Now I was still curious that how I could achieve my goal, to have many real-time lights, as it seemed simple as painting a render texture, because all I do is change 3 colors and a range value, meaning I only need 4 dimensions per unit. So its a nice unified number and today's CPU's  should be enable to do a-lot with  dividable numbers. So I quickly found this function "LightMesh" and the combination of "TFormed" posted by puki, back in 2004'ish, that quickly became very interesting to me. Since there are no shader program's available and I did not want to go in depth with triangles and vertices, as things can get really slow, really quickly with these functions (massive loops that are not unified at all!) So I wrote a piece of code from scratch and when I ran it, to my surprise the FPS was sustainable and the scenery looked well lit! There can be still many provements to be made, but as a RAW piece of code, it works surprisingly well!  So here take a look at it, and if you care enough, maybe post updates to it aswell. 

Cheers and have a nice day!
Ravel

;Include "../AShadowBBinclude/fps.bb"

Type TLight
Field source%
Field r#
Field g#
Field b#
Field range#
End Type

Type TLightReceiver
Field entity%
End Type

Global TLightCount% = 0

Function CreateTLight.TLight(lType%=1, parent%=0)
Local l.TLight = New TLight
If parent <> 0
l\source = CreatePivot(parent)
Else
l\source = CreatePivot()
EndIf
l\r=255
l\g=255
l\b=255
l\range=20
TLightCount = TLightCount + 1
Return l
End Function

Function TLightColor( light.TLight, red#, green#, blue# )
light\r = red
light\g = green
light\b = blue
End Function

Function TLightRange( light.TLight, range# )
light\range = range
End Function

Function TLightSetReceiver( entity% )
receiver.TLightReceiver = New TLightReceiver
If (entity=0) Then RuntimeError "Sorry captain, I don't have a clue what to do with 'nothing'... this means there is no receiver defined, Sir!"
EntityFX entity,2; enable vertex colors (!), make sure that the previous FX come along with the entity... otherwise we are going to have a bad time.
receiver\entity = entity
End Function

Function UpdateTLights()
For r.TLightReceiver=Each TLightReceiver
;reset all vertex colors before continuing
LightMesh r\entity,-(255),-(255),-(255)
For l.Tlight=Each TLight
TFormPoint 0,0,0,l\source,r\entity
; Some clever Pythagoras stuff, for further modifications!
ex# = EntityX(r\entity,1)
ey# = EntityY(r\entity,1)
ez# = EntityZ(r\entity,1)
lx# = EntityX(l\source,1)
ly# = EntityY(l\source,1)
lz# = EntityZ(l\source,1)
;emag# = Sqr(ex*ex+ey*ey+ez*ez)
;lmag# = Sqr(lx*lx+ly*ly+lz*lz)
dx# = ex - lx
dy# = ey - ly
dz# = ez - lz
dist# = Sqr(dx*dx+dy*dy+dz*dz)
; I know we should attach the distance to the receiver and compare the distances, but I got confused... 
;If(dist<(l\range*2))
LightMesh r\entity,l\r,l\g,l\b,l\range*l\range,TFormedX(),TFormedY(),TFormedZ()
;EndIf
Next
Next
End Function

AppTitle "Vertex Lighting with unlimited lights"
Graphics3D 1280,720,32,2

; Create some lights
For x=0 To 8
For y=0 To 8

sph = CreateSphere()
ScaleEntity sph,.1,.1,.1
PositionEntity sph,(x-4)*15,(y-4)*15,-4
light.TLight = CreateTLight(1,sph)
TLightColor(light,Rand(10,255),Rand(10,255),Rand(10,255))
TLightRange(light,1)

Next
Next

;Create the camera
camera=CreateCamera()
MoveEntity camera,0,0,-10
 
; Create the player
ent=CreateSphere(32)
TLightSetReceiver(ent);  Make the object receive light (NB!)
ent2=CreateSphere(16,ent)
ScaleMesh ent2,50,50,0.2
PositionEntity ent2,0,0,2
TLightSetReceiver(ent2);  Make the object receive light (NB!)

PointEntity camera,ent
While Not KeyDown(1)


; move the player
mov#=1
If KeyDown(203) MoveEntity ent,-mov,0,0
If KeyDown(205) MoveEntity ent,mov,0,0
If KeyDown(200) MoveEntity ent,0,mov,0
If KeyDown(208) MoveEntity ent,0,-mov,0
PositionEntity camera,EntityX(ent,1),EntityY(ent,1),EntityZ(ent,1)-30

;update the new lights and receiverss
UpdateTLights()

UpdateWorld()
RenderWorld
Text 20,20,"A Test of 8x8 Vertex Light Matrix (64 light sources acting on the receiver!)"
;Text 20,40,"FPS: "+Fps(50)
Flip 0
Wend
End