xyz The way 3D works in reality is vertices are connected by edges which form straight lines between which a triangle surface is drawn. What I imagined is if instead of a straight line, the edges and surface would act as curves, interpolated between the vertices based on the pixel's location. Essentially hardware subdivision surface or the way curves work in Godot and Blender, except without creating any extra vertices even temporarily. With such a system you'd pass a cube to the GPU and it would automatically draw a sphere from its 8 vertices.

Technically it should be possible, but I imagine there's likely a good reason why this never caught on. Infinite detail always fascinated me and it's a dream any developer would probably like to achieve... especially the idea of doing it through interpolation so you don't have to store extra data, though computing it in realtime can be equally costly and negate the benefit.

    MirceaKitsune The way 3D works in reality is vertices are connected by edges which form straight lines between which a triangle surface is drawn.

    And how, pray tell do you imagine the process of rasterization for the curve without trigonometry? That was the question posed.

      MirceaKitsune Your complaint is equal to complaining why do we need to have pixels. It's because of digitalization, i.e. because we're doing the thing using a digital computer. A triangle is the simplest and most efficient way to represent a local "quant" of a surface using numbers. It's a sort of "surface pixel" if you will. So however you want to represent your surface on the "higher level", when digitally rasterizing it, it's almost a necessity to break it down into triangles in the process. The same way it's a necessity to break any type of image into pixels if you want to display it on the screen.

      And GPU rasterization doesn't do anything "automatically", although it may appear so. It just delegates a lot of needed calculations to specialized parallelized hardware, instead of burdening the CPU with it. A GPU is not some magical device that pours images out onto screen. It's still just a plain old microprocessor. And like any microprocessor, it only knows how to run programs and munch data, although it's "specialized" in the sense that it prefers to munch a specific kind of data, quickly and efficiently. That quickness and efficiency is possible in great degree precisely because triangles are used for representing 3d surfaces.

      Infinite detail (whatever that actually means) is simply not possible using a digital computer. It's just a fantasy. Unless you stretch your definition of "infinite detail" to mean "adaptive subdivision/tessellation of analytic surfaces". That can be done (and it it done) without problems on today's hardware, but sooner or later in the process of putting it on the screen, everything needs to be broken down into triangles and then into pixels, either by the CPU or the GPU, or some other kind of *PU 🙂

        Megalomaniak It is trigonometry, just using less data more intelligently. Think of a normal bezier curve, even a curve drawn in the Godot menu is a good example:

        In this case you have 3 points you can move around in the editor, and between them you see a line. This line is smooth, not a straight line: You obtain this hump automatically just by defining the 3 points, each pixel on the line knows where it should be located based on its position in 2D space. Therefore you can only add 3 points to get a round bump, instead of needing to have say 16 points with straight lines between them to manually simulate the curve yourself and do so at a lower accuracy for more cost.

        My idea was what it would have been like if the GPU and OpenGL could do this in 3D space with vertices / surfaces in meshes: Instead of drawing straight triangles between vertices, treat each vertice as a curve point and draw 2D bezier curves between them. Just as for a 2D curve you know where a pixel is supposed to be between vertices by calculating the X + Y coordinates against them, in 3D you'd do the same based on X + Y + Z coordinates.

        Like I said I'm aware there's likely a good reason why this never happened, and whatever the reason it's likely too late now unless GPU manufacturers invent a new 3D technology (and we just got Vulkan). Godot like other engines is limited by the capabilities of the rendering technology it works with so it can't do this at hardware level even if it tried... which I guess makes me thinking about this a bit bizarre since it's pointless, didn't want this to get side-tracked from parallax but it's a concept from the same book of magic tricks that could have been used to better allow the illusion of infinite detail.

        xyz Infinite detail both is and isn't possible, and I think fractals like the Mandlebrot pattern illustrate it best: Each fractal is a mathematical formula, usually a very short one that only takes a few lines of code to define, yet when running it you get all those pixels on the screen. The only reason it isn't infinite is that you have a finite number of pixels in your monitor, but each pixel calculates itself at a particular position from a formula that is itself infinite and only bound by the lowest / highest number the CPU and RAM can define.

        As such I often wondered what it would be like if we'd have done the same with 3D. This can include a voxel based approach which is easier, there's actually a lovely software called Mandlebulber that does this with amazing results but sadly it's very slow since it's probably CPU based. But the concept could theoretically be used even with faces in conventional meshes if we interpreted them differently, such as allowing the a heightmap to change where a point on the surface is interpreted between its vertices instead of reading it as a flat triangle.

          MirceaKitsune Fractals are not infinite detail. They are just potentially infinite subdivision. You can't really use fractals as a modeling tool. They are unwieldy and at the same time repetitive. They get boring very fast.

          As for using non linear rendering primitives, like bezier patches for example, if you try to implement it you'll quickly see it's almost impossible to use them in such manner. There's a myriad of reasons why a linear primitive was chosen and it's not a matter of legacy. I could go into specifics but I won't until you implement a basic software rasterizer. It'll clear you mind and bring you out of the fantasy land 😉

          xyz It's because of digitalization, i.e. because we're doing the thing using a digital computer.

          I, too, think it's about time we moved on to quantum bio-computers and analog-vector monitors.

          • xyz replied to this.

            Tomcat I, too, think it's about time we moved on to quantum bio-computers and analog-vector monitors.

            Why?

              xyz for the semi-retro bio-punk cool factor?

              MirceaKitsune But the concept could theoretically be used even with faces in conventional meshes if we interpreted them differently, such as allowing the a heightmap to change where a point on the surface is interpreted between its vertices instead of reading it as a flat triangle.

              Ok, I think you are not understanding us here... We are saying that you inevitably have to decimate and rasterize to limit mesh the idealized mathematical curved surface no matter what. It's how the maths work out and the triangle is the most basic 3D element to do this with. Even CPU/Software rendered Catmull-Clark SDS still ultimately uses triangles to rasterize the limit mesh output. There's no escaping it. But as CC SDS/Reyes proved you can very successfully do 1 to 5 tris(or more even) per pixel to get a virtually infinite detail level if you have the data to render/rasterize.

              Basically Catmull-Clark subdivision surfaces with vector displacement would probably be for all intents and purposes what you are after here and you're just trying to reinvent the wheel here.

              edit: speaking of OpenSubdiv...
              https://github.com/godotengine/godot-proposals/issues/784
              https://github.com/tefusion/godot-subdiv

                xyz Why?

                Well, you yourself have listed the disadvantages of digital (binary) technology:

                xyz Infinite detail (whatever that actually means) is simply not possible using a digital computer. It's just a fantasy.

                which means it's time to decisively leave behind the technology of the past and move forward. We should not limit ourselves to the possibilities of the previous millennium.

                Megalomaniak for the semi-retro bio-punk cool factor?

                On a different technological level. Just like with electric cars, which appeared before gasoline-powered cars and were abandoned, but now they have triumphantly returned.

                • xyz replied to this.

                  Tomcat Well, you yourself have listed the disadvantages of digital (binary) technology:

                  I don't see those as disadvantages but merely as characteristics. I think the present computing paradigm is doing just fine. And if it ain't broke, no need to fix it 🙂

                  Tomcat triumphantly

                  I wouldn't be so hasty with that conclusion about EVs

                  Megalomaniak for the semi-retro bio-punk cool factor?

                  I yield! There's no defense against the cool-factor argument 😹

                    xyz And if it ain't broke, no need to fix it

                    If this approach always won out, we'd still be living in caves.

                    • xyz replied to this.

                      Tomcat If this approach always won out, we'd still be living in caves.

                      If the opposite of this approach always won, "we" would end up a civilization that sacrifices every bit of joy on the altar of unconditional progress.
                      I wouldn't mind living in a cave btw. Have you ever been in one? It's quite comfy. Every single piece of architecture ever built is just an attempt to artificially re-create the original living-in-a-cave experience.

                        xyz I wouldn't mind living in a cave btw. Have you ever been in one?

                        Uh… are you familiar with the term "speleology"? I was into it when I was younger. And karst caves and catacombs. So stories about the delights of cave life don't work on me at all — I know the reality from personal experience. Caves with toilets, hot water and central heating?

                        If the opposite of this approach always won, "we" would end up a civilization that sacrifices every bit of joy on the altar of unconditional progress.

                        The joy is in utilizing the fruits of progress. Reasonable, of course. With hedonism, certainly.

                        The humor is that now I am considering options to move from the city "to nature", including caves. But not out of love for primitive life, but because of the political situation. And I am not very happy about it, as I am well aware of the accompanying problems.

                        • xyz replied to this.

                          Tomcat Not sure how many fruits of hedonism can be extracted from non existent quantum computers and previous millennium vector displays though.

                            Tomcat but because of the political situation

                            See that's a bummer with lots and lots of technological progress. It creates a lot of power. And all that power can eventually end up in the hands of your political opponents. Who can turn into tyrants. This includes the power to compute. Which can turn into power to surveil.
                            Something to be aware of when yelping for more progress.

                            xyz Not sure how many fruits of hedonism can be extracted from non existent quantum computers and previous millennium vector displays though.

                            A lot. But why the previous one? Simply technology has made a circle (or rather a spiral) and can return to the idea on a new level.

                            And all that power can eventually end up in the hands of your political opponents.

                            We should not worry about it. Especially looking at the current situation. In brief, in this case everything happens because of the clinical stupidity of our (Russian) government. How this happened is a long and very political topic. But we can confidently say that the perpetrators of these events are simply unable to understand and use new technologies (they don't really understand the technologies of the last century). So the result is already clear. "Who will win is clear. It is not clear how many more will die."

                            Soviet military technology has always lagged behind Western technology precisely because of its secondary nature. I could tell many anecdotes from reality on this subject.

                            I forgot to add about the electric light in the caves.

                            • xyz replied to this.

                              Tomcat You're hijacking the thread with contemporary political crap again. I'd much rather return to discussing (im)possibilities of realistic parallax that pops out of surface geometry.

                                xyz You're hijacking the thread with contemporary political crap again.

                                And all I did was try to answer the question:

                                xyz Why?

                                I'd much rather return to discussing (im)possibilities of realistic parallax that pops out of surface geometry.

                                It seems to have already been decided that this requires a breakthrough in technology?

                                  Tomcat It seems to have already been decided that this requires a breakthrough in technology?

                                  of ten, fifteen years ago. I guess.