My email was more an encouragement than anything else :-) Alexandre
> On Dec 31, 2014, at 1:06 PM, kilon alios <[email protected]> wrote: > > not if the task is huge > > To give you an idea about the diffirence in size > > https://www.openhub.net/p/d3js > > https://www.openhub.net/p/blender > > you are a team of full time , very experienced pharo coders (correct me if i > am wrong) > > me I am a part time newcomer to pharo. > > On Wed, Dec 31, 2014 at 1:59 PM, Alexandre Bergel <[email protected]> > wrote: > Well... The hard way is very gratifying. We could have worked on an > integration of D3 in Pharo instead of working on Roassal :) > > Alexandre > > Envoyé de mon iPhone > > Le 31 déc. 2014 à 11:38, kilon alios <[email protected]> a écrit : > >> I dont doubt for a minute it will be a difficult task , this is why I chose >> not to do it and instead I went down the easy route of relying on existing >> graphics engines in my case Blender which I try to expose it to Pharo. I >> learned the hard way how much time one can waste doing things the hard way. >> >> On Tue, Dec 30, 2014 at 10:59 PM, Ronie Salgado <[email protected]> wrote: >> Is this a real concern ? Afterall vector data is a lot less complex than 3d >> geometry and CPUs nowdays are multicore. >> For really smooth and complex animations, yes it is a concern. Performance. >> If the objective is to draw a static shape or a slow animation, it is not a >> big problem. Also CPU <-> GPU data transferring is an expensive operation >> that has to be avoided if possible. >> >> Actually 2D vector data is more complex. 3D geometry comes already processed >> to be directly rendered, and it is represented by only two arrays: vertices >> and indices. >> >> In contrast, 2D vector data is represented by a stream of commands that have >> to be evaluated. >> >> BTW, we don't have support for real multithreading in Pharo, and we will not >> have it for a very long time. The closest thing to real multithreading that >> we are getting in the near term >> Don't know about the Opengl backend of Cairo. Igor also once shown me a Spec >> for vector graphics on OpenGL by Khronos Group. >> Well, there is OpenVG designed for mobile platform(Android and iOS). OpenVG >> is not supported by desktop graphic cards vendors. >> >> The closest thing we have in the desktop world is the NV_path_rendering >> NVIDIA only extension. At least the paper that describes this extension is >> really good. The bad thing is that it depends at least partially in the >> Loop-Blinn algorithm that is patented, if I remember right. >> >> Newest OpenGL versions also come with dynamic tesselation geometry shaders >> that basically increase the detail of a 3d object the closer a camera gets >> to it which is similar to vector graphics which is something that could also >> work as basic via NBOpenGL to bring Athens to 3d side completely bypassing >> Cairo. >> >> In first place, not all of the world have at least DX11/OpenGL 4.xx level >> graphic card. But, it does not matter too much because the hardware >> tessellation does not help you anything with the main problem. >> >> The biggest problem is that 2D vector paths can be concave, and they can >> have a hole . The easiest way to support it is by using the stencil buffer, >> and in my opinion is the method with the better results. In fact, the >> NV_path_rendering extension is implemented in this way, but directly in the >> OpenGL driver. >> >> This method renders first the tessellated path with a triangle fan, with the >> stencil test set to invert the stencil buffer bits. In this way, the stencil >> buffer holds 1 in the points that are inside of the path, and 0 in the >> points that are outside of the path. >> >> Then, the bounding box of the path is covered with fill color/gradient, but >> with the stencil test set to only pass when the stencil buffer value is 1, >> and to also clear the stencil buffer in the covered region during the >> process to allow rendering more paths elements. >> >> Each one of the changes to the way the stencil buffer is used involves a >> state change, which is expensive. I think this is the reason of why NVIDIA >> implemented their extension directly in the OpenGL. >> >> I know of these problems because I implemented once the stencil method in >> C++ with OpenGL. >> >> The old opengl Cairo backend worked by triangulating the paths. >> Triangulation of concave geometry is hard to do, and there some degenerate >> case in which it produces bad results. >> >> Best regards >> Ronie >> >> 2014-12-30 16:58 GMT-03:00 kilon alios <[email protected]>: >> >> Is this a real concern ? Afterall vector data is a lot less complex than 3d >> geometry and CPUs nowdays are multicore. >> >> Don't know about the Opengl backend of Cairo. Igor also once shown me a Spec >> for vector graphics on OpenGL by Khronos Group. >> >> So there are alternatives but as always it will require someone doing the >> hard work to bring that functionality to Pharo. >> >> Newest OpenGL versions also come with dynamic tesselation geometry shaders >> that basically increase the detail of a 3d object the closer a camera gets >> to it which is similar to vector graphics which is something that could also >> work as basic via NBOpenGL to bring Athens to 3d side completely bypassing >> Cairo. >> >> On Tue, Dec 30, 2014 at 9:18 PM, Ronie Salgado <[email protected]> wrote: >> Athens uses Cairo , Cairo can be used with OpenGL. You can use Cairo to >> apply a 2d vector graphic as a texture to a 3d polygon. Cairo website shows >> several examples of this. That means its possible to have 2d vector graphics >> in 3d space as if its true 3d. >> I do not think that is going to work easily with the best performance >> possible. Cairo could be using OpenGL, but probably in a different OpenGL >> than the one that is being used for 3d graphics. >> >> In addition, the Cairo OpenGL backend is experimental >> (http://cairographics.org/OpenGL/) . Currently you have to render into a >> surface in CPU, then transfer it into GPU and then render the polygon. A >> naive version using the OpenGL backend is going to have GPU->CPU->GPU >> roundtrip >> >> If we are using this route, I think that is better to just use the current >> version of Athens for this. With Athens we can render into a Form, which can >> be used to populate a Woden/Roassal texture or transferred directly to >> OpenGL. This has the advantage of not having a explicit dependency in Cairo. >> I guess that I will make a demo of this later. It should be easy. >> >> I think that a longer term approach could be having a custom renderer, >> tailored for Athens using OpenGL or maybe OpenCL. >> >> 2D vector graphics are really hard. In my opinion they are harder than 3d >> graphics because of concave self intersecting paths. Stroking a path can be >> really hard because of thins such as tapering. >> >> The 3D hardware is designed to draw efficiently points, lines and triangles. >> All of them are simple convex polygon. Most of the 2D vector engines such as >> Cairo are software renderer, scanliners to be more specific. The old cairo >> opengl backend had to tessellate the paths >> >> Later I am going to take a better look in Jun. And see how I can integrate >> with Woden/Woden-Roassal. For what I have seen in the videos, it seems to be >> using software rendering. Currently I have been working in my internship >> about volumetric data visualization and the new FFI. >> >> 2014-12-30 11:01 GMT-03:00 kilon alios <[email protected]>: >> >> Athens uses Cairo , Cairo can be used with OpenGL. You can use Cairo to >> apply a 2d vector graphic as a texture to a 3d polygon. Cairo website shows >> several examples of this. That means its possible to have 2d vector graphics >> in 3d space as if its true 3d. >> >> On Tue, Dec 30, 2014 at 12:10 AM, stepharo <[email protected]> wrote: >> Sven >> >> Jun is a 3D frameworks developed in 1998 in VisualWorks >> http://aokilab.kyoto-su.ac.jp/jun/index.html >> It was quite advanced and this is nice to get more people doing 3d in Pharo. >> They are using the back -end developed by ronie and JB and this is cool >> >> Athens is just a canvas and a oo decomposition of the canvas, brush and >> strokes >> nothing related to 3D. >> Stef >> >> >> Le 29/12/14 20:20, Sven Van Caekenberghe a écrit : >> >> On 29 Dec 2014, at 15:36, stepharo <[email protected]> wrote: >> >> https://www.youtube.com/watch?v=sH_P5otiWJM&feature=youtu.be >> It certainly looks nice, but what is Jun exactly ? >> >> >> >> >> >> >> >> >> > -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
