Logo by Trifox - Contribute your own Logo!
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. June 27, 2017, 02:16:25 AM


Login with username, password and session length



Pages: 1 [2] 3 4 ... 7   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: Remake of MB3D  (Read 7391 times)
Description: A reboot of the MB3D project
0 Members and 1 Guest are viewing this topic.
Weber
Conqueror
*******
Posts: 107



« Reply #15 on: July 30, 2016, 04:54:52 PM »

This is very good news!

I would like to see a few things change with the new version.

-Better lighting/more lighting options
-Ability to fine tune texture position/size
-Better/Faster rendering
- I don't exactly know how to put this, so I'll just take a shot.  There needs to be something in the window that tells the user how much geometry/complexity is going on in a particular fractal.  Some fractals extremely slow down the program compared to others that run smooth and render quicker.  Some of these are very hard to navigate through as well.  For example, I have an m3i that is using 5 formula slots and only one light with really not much more and is way slower than other m3i's that are using all 6 slots with a lot of post processing!  Like it takes longer than 5 min. to render @960x640 with only Hard shadows and ambient shadows with this particular m3i.
Logged
Sockratease
Global Moderator
Fractal Senior
******
Posts: 3112



« Reply #16 on: July 30, 2016, 05:33:36 PM »

This is very good news!

Agreed!

...-Better lighting/more lighting options
...
-Better/Faster rendering...

Better lighting how? And what lighting options would you like?

Faster rendering is always something folks want, but again - better rendering in what way?

Hope nobody minds me butting in and asking that - but like bug reports, requests should have a little more details when asking for improvements.

I do like the idea of a complexity alert, or any warning that the options you chose will require "longer" render times  (I know that sort of thing changes for everyone, so may be harder to actually pin down - but I too find myself setting things up in the Navigator then being surprised at the render times in the main window).

My own request would involve the Navigator.  Since it has a totally different render engine, often things look very different in the main window.

That's fine!  Nature of the beast, as they say.  But if there were some way to render from the navigator so we can get a higher resolution picture of what we see in there, it would be nice.  Maybe a "render to disc" option in there, with pixel dimensions entered manually, so the screen does not need to resize or use scrollbars?
Logged

Life is complex - It has real and imaginary components.
Weber
Conqueror
*******
Posts: 107



« Reply #17 on: July 30, 2016, 07:20:41 PM »

Better lighting how? And what lighting options would you like?
better rendering in what way?

1.  More realistic lighting, environmental lighting, better shadows, and shaders etc.
2.  Selectable rendering modes and global illumination modes like QMC( Quasi Monte Carlo)etc... 
This would also include the ability to have different texture/material types like fresnel etc... that would tell the renderer how to interact better with the material its rendering.
Obviously you only have one texture map to work with but by adding a little bit more tweakability, I think the final results would be even more amazing!
I've done a lot of work with V-ray rendering and so having these options are a must for me.  Furthermore, having the ability to add normal and specular maps would be a great feature as well.
Logged
m2001
Conqueror
*******
Posts: 110


« Reply #18 on: July 30, 2016, 07:59:51 PM »

i dont know how complicated it is to set different textures for each formula and for me it would be cool to get:
- a programmer who can do this wink
- a faster GPU renderer with similiar results as the current renderer
-> hope thats not needed, to have two complete different renderers (navi and final), rather that is possible to have a "low quality and very fast navi renderer" and "high(er) quality final renderer"
- more exact soft-shadows
- more exact and smoother AO (DEAO)


btw. it takes some time, but with the current renderer u can get good results:
http://matze2001.deviantart.com/art/metal-Mandelbulb3D-with-Parameters-and-Texture-564231548
http://matze2001.deviantart.com/art/crystal-part-2-Mandelbuld3D-with-Parameter-568054520
http://matze2001.deviantart.com/art/2xIFS-DEcomb-Mandelbulb3D-with-Parameter-614273684
http://matze2001.deviantart.com/art/brushed-steel-texture-heightmap-MB3D-ressource-601396093
http://matze2001.deviantart.com/art/construction-dry-Mandelbulb3D-with-Parameter-601027131
Logged

0Encrypted0
Fractal Fertilizer
*****
Posts: 376



WWW
« Reply #19 on: July 30, 2016, 11:28:34 PM »

Would it be possible to code the core application with an API so other developers could design external add-ons to customize the user interface and/or post processing options?

Alternate, Interpolate and DEcombinate are the current methods to hybridize formulas.
Is the Coupled Mandelbrot Sets (CMS) method applicable to 3D?
Could it be added to the above methods?

Moved to Coupled Mandelbrot Sets (CMS)

Side note question to MB3D users, have you used the Interpolate method and if so can you link to some images created by this method?
Disregard, as I do not want to clutter this thread with off topic posts. embarrass
New thread Have you used the Interpolate method?




Application program interface (API)
« Last Edit: July 31, 2016, 06:25:43 AM by 0Encrypted0 » Logged

valera_rozuvan
Safarist
******
Posts: 80


a test in time


valera.rozuvan valerarozuvan
WWW
« Reply #20 on: July 31, 2016, 12:57:18 AM »

Would it be possible to code the core application with an API so other developers could design external add-ons to customize the user interface and/or post processing options?

In the long term - yes. A method to add plugins, such as the one used in Blender, can be created. An interpreted language, such as JavaScript or Python, can be used for plugin coding. However, this has to be thought through carefully, and the design of the program must allow for such a system in the future.
Logged

m2001
Conqueror
*******
Posts: 110


« Reply #21 on: July 31, 2016, 02:55:38 AM »

Side note question to MB3D users, have you used the Interpolate method and if so can you link to some images created by this method?


https://www.facebook.com/groups/amandelbulbmaniac/permalink/883481418413097/

have you never tried it?
Logged

valera_rozuvan
Safarist
******
Posts: 80


a test in time


valera.rozuvan valerarozuvan
WWW
« Reply #22 on: August 02, 2016, 03:32:21 AM »

I have come to the realization that it takes a lot of time to convert a MB3D formula to working C code. For example if we look at the file Kalisets1.m3f, we see in the CODE block:

Code:
558BEC56578B75088B7E30DD01D9E1DD02D9E1DD00D9E1D9C0D8C8D9C2D8C8DE
C1D9C3D8C8DEC1DC47E8DC7FF0DCCADCCBDEC9DC4618DD18DC4620DD1ADC4628
DD195F5E5DC20800

This roughly translates to the following assembly:

Code:
.data:00000000 55                               push   ebp
.data:00000001 8b ec                            mov    ebp,esp
.data:00000003 56                               push   esi
.data:00000004 57                               push   edi
.data:00000005 8b 75 08                         mov    esi,DWORD PTR [ebp+0x8]
.data:00000008 8b 7e 30                         mov    edi,DWORD PTR [esi+0x30]
.data:0000000b dd 01                            fld    QWORD PTR [ecx]
.data:0000000d d9 e1                            fabs   
.data:0000000f dd 02                            fld    QWORD PTR [edx]
.data:00000011 d9 e1                            fabs   
.data:00000013 dd 00                            fld    QWORD PTR [eax]
.data:00000015 d9 e1                            fabs   
.data:00000017 d9 c0                            fld    st(0)
.data:00000019 d8 c8                            fmul   st,st(0)
.data:0000001b d9 c2                            fld    st(2)
.data:0000001d d8 c8                            fmul   st,st(0)
.data:0000001f de c1                            faddp  st(1),st
.data:00000021 d9 c3                            fld    st(3)
.data:00000023 d8 c8                            fmul   st,st(0)
.data:00000025 de c1                            faddp  st(1),st
.data:00000027 dc 47 e8                         fadd   QWORD PTR [edi-0x18]
.data:0000002a dc 7f f0                         fdivr  QWORD PTR [edi-0x10]
.data:0000002d dc ca                            fmul   st(2),st
.data:0000002f dc cb                            fmul   st(3),st
.data:00000031 de c9                            fmulp  st(1),st
.data:00000033 dc 46 18                         fadd   QWORD PTR [esi+0x18]
.data:00000036 dd 18                            fstp   QWORD PTR [eax]
.data:00000038 dc 46 20                         fadd   QWORD PTR [esi+0x20]
.data:0000003b dd 1a                            fstp   QWORD PTR [edx]
.data:0000003d dc 46 28                         fadd   QWORD PTR [esi+0x28]
.data:00000040 dd 19                            fstp   QWORD PTR [ecx]
.data:00000042 5f                               pop    edi
.data:00000043 5e                               pop    esi
.data:00000044 5d                               pop    ebp
.data:00000045 c2 08 00                         ret    0x8

Now, that file also has a short description which has information about the actual mathematics that is going on:

Code:
x = abs(x)
y = abs(y)
z = abs(z)
m = Scale/(x*x + y*y + z*z + Fix)
x = x*m + Cx
y = y*m + Cy
z = z*m + Cz

I tried first to program a C function that directly resembles the assembly code (i.e. as if I didn't have the math equations). This manual conversion of assembly code to C code took me a couple of days. Mainly the testing and debugging of the original MB3D formula inside the Mandelbulb3D program (to verify if my C version is working correctly).

Now this is a simple formula. There are others not so simple. Also, there are about 300 of them! So, scratch the idea of converting EVERY single formula... until I get myself Hex-Rays Decompiler which can automate the process for me. But that piece of software costs a lot! An x86 Decompiler License costs 2350 USD!

I think that, initially, I will make available formulas from MB3D which have a detailed high-level description for them (mathematical or pseudo code). I will program them from scratch. Maybe in the future, I will get myself one of those shiny Hex-Rays Decompilers...
Logged

0Encrypted0
Fractal Fertilizer
*****
Posts: 376



WWW
« Reply #23 on: August 02, 2016, 04:50:50 AM »

@valera_rozuvan
What do you envision as the new code format for formula files?

Consider converting just a few formulas to start out and letting the community recreate the majority of remaining m3f files.

Also need to check with DarkBeam to see if he has notes on the intermediate steps used when coding m3f formulas.
Logged

mclarekin
Fractal Senior
******
Posts: 1667



« Reply #24 on: August 02, 2016, 05:05:23 AM »

Quote
I do like the idea of a complexity alert, or any warning that the options you chose will require "longer" render times

This is a good idea, another to consider is to alert users as to how good the Distance Estimation calculation performs ie  excellent or average.

There are a few M3D formulas that are re-written in C++ in Mandelbulber that you should be able to port easily.
Logged
valera_rozuvan
Safarist
******
Posts: 80


a test in time


valera.rozuvan valerarozuvan
WWW
« Reply #25 on: August 02, 2016, 05:48:12 AM »

What do you envision as the new code format for formula files?

Formulas will be defined in pure C language. Along with them there will be several files:

1. Image - preview of rendered formula.
2. Readme file - human readable (text) description of the formula.
3. Config file - all of the formula function's constants, parameter names, ranges, and other information needed at run time to make use of the formula. Format of this file probably will be JSON (very easy to write).

All of the formulas will be stored in a separate GitHub repository. Anyone can create a new formula, and propose it's addition to the GitHub repository (in the form of a pull-request for non-dev members). From within the program, you will be able to fetch all the latest formulas with a single click of a button. This gets rid of the need to release a new version of the program just because some new formulas have been created on FractalForums.

It will be possible to create, and modify a formula from within the program. JIT compiling will probably be done via LLVM.

Also, it will be possible to load a formula from a file, from a copy-paste operation, or even specify a different Git repository with many formulas.
Logged

mclarekin
Fractal Senior
******
Posts: 1667



« Reply #26 on: August 02, 2016, 06:25:08 AM »

.
Quote
There are a few M3D formulas that are re-written in C++ in Mandelbulber that you should be able to port easily.

Also these are M3D formulas with extra parameters, when you are ready I can advise you.

Quote
Consider converting just a few formulas to start out and letting the community recreate the majority of remaining m3f files.

That is a sensible idea, say 30 people doing 10 each, would have it done quickly. I would volunteer to do 10 - 20 (preferably the formulas I understand).
Logged
1Bryan1
Fractal Fanatic
****
Posts: 331



WWW
« Reply #27 on: August 02, 2016, 11:56:16 AM »

Firstly.
WOW.

Secondly.
I functionally like everything about the MB3D.
I especially like the Navigation window and the way the fractal shown acts like an object (i.e. when zooming, you do not move through the surface) and that this can be switched off (do you can move through the surface).

What I find really challenging is the rendering time of the main window.
If this could be reduced - it would be wonderful (I look in envy those GPU programs that reader vire so quickly).

Apart from that, just one other thing - I automate the hell out of MB3D to produce 1000's of potential renderings (sort of like  thargor6's MutaGen however my program learns about what I like in fractals and tries to please me). This manipulates the MB3Ds windows and controls to change values and render small images (also how I produced the 35,000+ images of the combination of all pairs of formula).
This is a rather painful process - if there was a API / Web service exposed by MB3D then automation would be so much easier (i.e. an external program could query, set and request changes just like the user).
Logged

Find 340+ more of my fractal art at http://1bryan1.deviantart.com/gallery/
Madman
Fractal Molossus
**
Posts: 676



« Reply #28 on: August 02, 2016, 08:52:14 PM »

I tried first to program a C function that directly resembles the assembly code (i.e. as if I didn't have the math equations). This manual conversion of assembly code to C code took me a couple of days.

It's been a while since I've been programming in C, so I might say something stupid... Isn't there an assembly module in your C compiler somewhere? I know there was in Borland C++ (I told you that it's been a while...).

@ 1Bryan1: Not quite sure if we need more automation in fractal generation. It kind of takes the creativity out of the proces, doesn't it? I am not a frequent user of Mutagen; I think the almost realtime modifications you can do in the Navigator should be enough
Logged

All I want is a warm bed, a kind word and unlimited power (Ashleigh Brilliant)
valera_rozuvan
Safarist
******
Posts: 80


a test in time


valera.rozuvan valerarozuvan
WWW
« Reply #29 on: August 02, 2016, 08:56:00 PM »

What I find really challenging is the rendering time of the main window.
If this could be reduced - it would be wonderful (I look in envy those GPU programs that reader vire so quickly).

Unfortunately, GPU is not the be-all end-all solution. If you increase the number of formulas used to build a hybrid fractal, the time of a high quality render will also increase. It doesn't matter if it's CPU rendering or GPU rendering. If the number of calculations increases - the time to perform all of those calculations increases too.

The way out of this problem is massive parallelization of calculating resources. I am thinking of integrating into the future program a system which will allow for easy configuration of multi-system rendering setups (farms). So, for example, if you have access to 100 Amazon EC2 instances, with the program running on each one, then you just have to specify the IP range of those EC2 instances in the main program, and enable "Calculate in parallel" setting. That's it. Now instead of 100 hours, it will take roughly 1 hour to do the job.
Logged

Pages: 1 [2] 3 4 ... 7   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
MB3D Mandelbulb3D Gallery abbaszargar 0 204 Last post March 03, 2013, 08:04:47 PM
by abbaszargar
MB3D Mandelbulb3D Gallery abbaszargar 0 233 Last post March 06, 2013, 12:23:37 AM
by abbaszargar
MB3D Mandelbulb3D Gallery abbaszargar 0 193 Last post March 09, 2013, 09:22:08 PM
by abbaszargar
"Alien Tech" remake by eiffie Movies Showcase (Rate My Movie) Kali 9 532 Last post September 25, 2013, 07:05:29 PM
by eiffie
New name for remake of MB3D Mandelbulb 3d « 1 2 » valera_rozuvan 20 1046 Last post August 15, 2016, 11:54:16 PM
by Fitz

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.26 seconds with 28 queries. (Pretty URLs adds 0.022s, 2q)