Cycles X
code.blender.org
code.blender.org
In contrast, Maya is has more features overall but is... a piece of shit in many ways. It doesn't matter what hardware I've used; it's a rule that Maya has to crash randomly when doing basic things. I used to be able to just open the Hypershade, but with Maya 2020 merely opening it causes the entire application to crash.
So I've decided to ditch it for Blender. I'm not doing character animation anymore, but I still enjoy modeling and rigging some things I want to conceptualize in 3D space, as well as create 3D printables, and Blender is absolutely up to the task.
It kind of baffles me how little interest the motion picture and television industries have had in Blender. Big studios are still using Maya, which I know also crashes for them and has performance issues. They could pour all their money into improving Blender and eventually not have to pay Autodesk anymore for licenses for poorly managed software that seems to rarely receive bug fixes.
Would you mind sharing what kind of character work you've done previously (hobby or pro) and what types of topics or projects drive you to use Blender for conceptualization?
I never really got to work with it in a professional space, but before software development I wanted to do character animation and went to school for it. Outside of assignments, I did a bunch of hobby projects both with just animation and sculpting. I was particularly interested in mixing CGI with live action, and there were some things I did with modeling and rigging things like monsters, filming footage, resolving camera motion, and compositing rendered animation into the video. Was both a lot of fun and horribly difficult. These days I it's much easier since software for resolving camera motion has improved by orders of magnitude.
There was a studio I worked at briefly, but it was a pretty crappy deal and I decided to just ditch that field for software development, which I am much better at anyway.
Thanks for sharing those notes on your character animation background.
I'm curious what drove you to be interested in mixing CGI / live action. Jurassic Park, perhaps?
When I was a kid Roger Rabbit and Cool World were amazing to me. JP's CGI seemed different, as though the dinosaurs were real.
> what types of topics or projects drive you to use Blender for conceptualization?
So I often have hobby projects (that I sometimes complete, heh) where I would rather sketch it out in Blender so I could more easily figure out what it is I want to build. Sure, I could be using something like Solidworks, but I've just never felt like I needed a full on CAD suite to do what I need. The process helps me design physical objects and decide what parts I'll need to either buy or 3D print.
One such example is a 16mm film scanner I've been meaning to build. I have a 16mm projector and collect 16mm films, and some films you can find on eBay are kind of obscure. So I thought it would be fun to build something to scan them since it would use my programming talent and involve controlling stepper motors.
That was actually where I gave up on Maya completely. I had used Blender for some things already so the transition was pretty easy, but I have more experience in Maya overall. After having it crash on something basic, not even potentially weird operations like booleans (which every other 3D software package gets right), I decided to abandon Maya entirely and hopefully I won't ever have to look back.
Do you see a push away from Maya and 3DS max for a more platform agnostic modeling environment? Blender seems to be mentioned all over the place for beginners. From what I am hearing on podcasts, Unreal Game engine is making a big push into film/animation production in addition to its impressive game credits. As long as you can export an FBX file UE4/5 should be a great pipeline, or do I have it wrong?
To answer your question, the field has been sloooowly diversifying in some ways, as you say with Unreal (particularly since Unreal's engine is fast and good for real-time previews), but I don't see a huge push for moving away from does-it-all packages like Maya or 3DS Max. The economic incentive isn't there. Studios have figured out how to make their money and are comfortable with the pipelines that they already have. This isn't to say their pipelines are good. In fact, many of you would be shocked at just how bad most animation pipelines are at big studios. Not only are they way too vendor-locked (as is kind of the case with Maya), but they don't want to pay an adequate salary for qualified software engineers who can build better pipelines and write more software that's agnostic. Of course, I'm making sweeping generalizations, but this is the kind of story I've heard more often than not. Pixar is known for having good practices and they write (and sell) their own software, but I don't closely know anyone who has worked there.
It's going to take a decline in the field of animation before studios realize that they're basically stuck in 2006 in terms of how their artists are working to make their content. I won't mention them here, but people at certain major studios have been trying to get things like Unreal for 10+ years and never get approval to receive licenses for it and they never do because higher ups don't believe they'd see a monetary return on investment. Their content is so profitable that the people in charge don't really give a fuck.
In case I didn't make it clear, I'm pretty much an outsider at this point, so I'm sure there may be some more relevant viewpoints here that would contradict mine. I don't intend to be authoritative.
https://www.youtube.com/watch?v=VkvRBvKHFek
Also, at studios, you tend to hear about the "main" pipeline where the majority of the work flows through. There are often secondary, smaller pipelines where they evaluate new tools and workflows before committing to entire rewrites. I would agree that small to medium sized studios don't have the resources or luxury to do as much exploration
For work and also hobby I create 3D animations and experiment with all sorts of things in Maya. A recent turning point was using Redshift to render everything and suddenly I can do overnight GPU renders at high quality. Here are some of my projects released using a CC license -
This is usually a general technology smell. Consistent, profitable revenue is the technological equivalent of the resource curse [0].
I haven't figured out if it's because people never get fired (thus new ideas are extremely slow to penetrate and propagate) or because management can afford to be extremely conservative (no pressure, resistance to change).
Put the most charitably, it's because there's no need to be more efficient, and stability & consistency is more valuable than improvement.
Sorry but that’s completely wrong. Almost every animation or vfx studio is barely scraping by. Margins have been reduced so much for film work it’s extremely difficult to turn a profit, which is why so much work is outsourced overseas these days. The reason software isn’t better is because they barely have the resources to improve it.
Everyone’s aware of newer tools, but things like unreal still arnt as good as traditional non-realtime pipelines in terms of flexibility and scalability.
I’m pretty sure there has been a huge decline in feature animation in the United States. VFX and feature production has almost collapsed here, with much of it moving to places that offer subsidies and cheaper labor for this kind of work, like Canada, Europe, and India.
The last time I tried Blender - which admittedly is a while - it was practically unusable with a trackpad. Has this changed?
With Blender, it's not only a matter of learning the key combos, but it even has on-screen controls by default so you can at least use that. Maya used to have something similar, but they pretty much got rid of it. It's possible to configure Maya to make it easier to use with a trackpad, but the configuration for doing so is horribly obtuse and messes with mouse usage.
There's also an official Pie Menus add-on that lets you fit more controls in a smaller laptop keyboard. Numpad is the normal way to switch between view directions, but having them in a radial menu keeps it reasonably usable.
Lack of middle-mouse drag could be awkward and I don't know the solution off the top of my head, but I imagine there's something. You need to have both pan and zoom, I'd guess one is via two-finger scrolling and the other adds a modifier key?
https://blendermarket.com/products/pie-menu-editor
Alias (and now Autodesk) has been abusing the patent system and spreading FUD about marking/pie/radial menus being patented for decades, which inhibited 3dsmax and Blender from supporting them for many years. But now Blender has excellent support for pie menus, and they're not encumbered by patents.
Autodesk Advertisement About “Patented Marking Menus”:
https://miro.medium.com/max/534/1*3C79dFnlhN__OJ3XmEjN9A.png
http://images.autodesk.com/adsk/files/aliasdesign10_detail_b...
Pie Menu FUD and Misconceptions: Dispelling the fear, uncertainty, doubt and misconceptions about pie menus.
https://donhopkins.medium.com/pie-menu-fud-and-misconception...
>The Alias Marking Menu Patent Discouraged the Open Source Blender Community from Using Pie Menus for Decades
>Here is another example that of how that long term marketing FUD succeeded in holding back progress: the Blender community was discussing when the marking menu patent would expire, in anticipation of when they might finally be able to use marking menus in blender (even though it has always been fine to use pie menus).
>As the following discussion shows, there is a lot of purposefully sewn confusion and misunderstanding about the difference between marking menus and pie menus, and what exactly is patented, because of the inconsistent and inaccurate definitions and mistakes in the papers and patents and Alias’s marketing FUD:
https://blenderartists.org/t/when-will-marking-menu-patent-e...
>"Hi. In a recently closed topic regarding pie menus, LiquidApe said that marking menus are a patent of Autodesk, a patent that would expire shortly. The question is: When ? When could marking menus be usable in Blender ? I couldn’t find any info on internet, mabie some of you know."
The funny thing is that there are litanies of complaints about many core Autodesk products that echo the same chorus: the software is poorly maintained, bugfixes are promised "for the next released" (paid upgrade, of course) and yet, they never appear. Customer feature requests are completely ignored and each release feels like it's just a version number bump with a few token changes here and there so that sales can act as if they created a meaningful new release.
I've gotten the chance to have a few conversations with some on the Maya team before, and they are great people. But they are fairly hamstrung by a company focused on sales and growth than development, one where M&E is less than 10% of their company revenue[0] (those numbers, which are an increase in revenue, can likely be attributed to the forcing of subscriptions), and having to cover a lot of ground re-architecting an application with a ton of technical and legacy debt. The historical idea of Maya being a Fraken-app exists for a reason.
[0] https://investors.autodesk.com/static-files/749abc95-16be-4c...
I wonder if the market is that small.
Adobe is their Microsoft.
> Autodesk is the Oracle of the professional media world.
Autodesk’s reach in the niche of M&E 3D packages seems far more horizontal than Oracle’s in even databases. It is as though they set out to own all of the competition and largely succeeded – and this isn’t even the area that brings in most of their revenue.
It's the same with Sports games, "corporate software" etc etc
Maya continues to be the industry leader because VFX studios have spent 20 years integrating it with their pipelines. Blender could beat Maya feature for feature, and places like ILM and Weta still won't adopt it because of the effort required to fit it into their pipelines.
To be a little bit fair - those systems are in fact very complex, and it is quite a big deal to do anything in them. But literally as I speak Photoshop will not go 'fullscreen' on my Mac, and Adobe blames this utterly ridiculous bug on Apple. Which may very well be the case but whoever is 'at fault' - things are retrograding a little bit.
I sense there is opportunity for a new angle on things.
Sure thing, but it seems even you are acknowledging that this specific issue seems to belong to Apple rather than Autodesk, so you're saying things are retrograding in the Apple ecosystem here, not Autodesk.
Disclaimer: I'm biased against Autodesk and love Blender, but even I see the fault in your argument here.
I don't know if I have a point to make, I just wanted to gush about my favorite 3D software, and also I'm sad to see what autodesk is doing to Maya, what an absolute disaster. I loved Maya so much when I was a teenager. It was built by a brilliant company (Alias|Wavefront), it could've been so good if it wasn't sold to autodesk.
I've also kept an eye on Blender since then, and no other piece of OSS causes me so much joy to see the improvements it makes version after version, specially because they are usually linked to small movies which demonstrate the capabilities.
But the few times I've taken a look at the Python SDK, I've felt a bit turned off. It somehow felt a bit like Cinema4D, where you had this huge API to code against, but never ended up with small modules (DAG nodes) which were pretty much stand-alone utilities which you could then connect to anything Maya had to offer.
I've seen that Blender lately has something which feels a bit similar, but it appears to be limited to shading pipelines (Shader Nodes).
There are no such transform, group, deformer nodes and stuff like that which allows you to manipulate geometry, correct?
I mean, in Maya I'd build a simple data node (in C++) which had an input, and I'd route the xyz of an object to the xzy-input of my data node, and then apply particle physics to that object and hit play, and the data node would then obtain a "data stream" in its xyz-input representing the object's position, as a very trivial example. Even vertices could be "streamed" into such data nodes. How would I do such a thing in Blender (with Python)?
They’re extremely new (2.92 I think) so the framework is there but there aren’t many nodes yet; 2.93 introduced a whole bunch of new nodes though.
[1] https://docs.blender.org/manual/en/latest/modeling/geometry_...
Edit: Hmm, it appears to not have a C++ API.
[0]: https://docs.blender.org/manual/en/latest/modeling/geometry_...
[1]: https://wiki.blender.org/wiki/Source/Nodes/EverythingNodes
* It too is crash happy just in different ways. However Maya scales better with large scenes than Blender does and that's key
* Blenders licensing is a deterrent. Very few people want to deal with GPL.
* Blender is not good for extensibility if you're looking for performance. The API is unstable and exposed only via Python. Studios need to extend the DCCs and Blender doesn't allow for it in the way they need unless they fork the whole app.
*Blender has no professional support contract. This is very important for studios.
I think Blender is awesome, but a lot of the stuff that makes it appeal to freelancers doesn't appeal to big studios. In some cases like the licensing, it pushes them away.
Why would a studio care about this? A tech firm would certainly care, but the entertainment industry? They probably don't know what GPL is and would probably just associate it with "free"
Even if it's just for internal consumption, legal likes to know what's going on and where it might impact them later.
However, the GPL and other copyleft software will not for the most part have much of an effect on studios unless they sharing some of their IP they've created with the broader community, partners, and/or proprietary software vendors.
A friend worked at a company where they banned GIMP as they feared that editing logos and other trademarks in it could invalidate them.
Even working for a tech company, I don't think I would suggest using anything GPL as it would cause a fuss.
If you're a senior enough manager and have a legitimate business reason then you can often push back enough and get them to give in, but it's really a question of whether it's worth your time and effort internally.
Quite a few have released commercial software, share proprietary software with partner/vendor companies , or contribute to OSS.
As with any tech company, the GPL is a very unwelcome license for fear of how far reaching it can be.
Of course it's even more silly when you consider that you're never going to be making patches to Maya, so in theory nothing is lost on the Blender side here.
Given that, I'm not surprised that the (not-always-technical) lawyers are worried about GPL.
"even" Ubuntu? Are you implying that Canonical are some kind of champion of free software?
Expecting an entertainment industry org (which were specially attacked in latest version of GPL around DRM) to be comfortable seems far fetched.
If the Blender foundation offered paid support, such that studios used it like a black box (e.g like Maya etc), then the GPL part doesn't matter. They can get someone else to take on the burden and supply them with builds.
Blender however doesn't offer that and I think it's a missed opportunity.
However even if that were the case, extensibility is important. And unfortunately, blender doesn't have any API other than Python, and its API is GPL too. Studios need a C like API for performance reasons, and using the API shouldn't affect the licensing of their own code.
Blender has some rather embarrassing performance choke-points even doing relatively simple things in some cases, that software like Maya and Houdini don't have to the same degree.
GPL code (even if you're not distributing anything) is more of a problem than people would think, especially for places working on very strongly defended IP content (Marvel), where the content owners need to have guarantees that the software used is fully-licensed (there have been quite a few incidents in the industry where unlicensed commercial software was used, which causes surprising issues, like films being delayed), and similarly they need to know the software licenses for non-commercial software used doesn't have "surprises" in (some software has weird additions to licenses, like "must provide credits", and even the artists / developers working on the show for the studio don't necessarily get that).
Extensibility is really the key thing: you wouldn't believe how much custom code is written for glue wrapping around stuff for integration - still mostly Python2, although 3's on the way for the industry, but the fact Blender only supported Python3 when the industry as a whole was still happy with Python2 (they don't really care about unicode, they would have loved the GIL to be removed though) meant it was a non-starter. Similarly, custom plugins (in C++ for performance) are required in huge numbers for various different things, modifiers, deformers, proxy drawing code, etc, etc, and Blender doesn't expose anything like that.
Again, support: Autodesk are far from perfect, but they will fix critical bugs for key customers when they insist - i.e. there aren't work-arounds (often within a week).
I see this claim taken seriously all over the place, and I just don't get it. How in the world is the GPL actually an issue?
The GPL does not apply to anything made with Blender; only changes made to Blender. You can very trivially use Blender without ever dealing with the GPL.
Do studios really think they need to make changes/extensions to Blender itself, then keep those changes totally private and proprietary? How absurd!
I just can't for the life of me think of a scenario where the GPL would actually inconvenience a studio. The only potential problems I can imagine are beaurocratic FUD like having a legal team arbitrarily demand every tiny piece of work be owned by the studio. What a silly reason not to use better tools.
If Blender had a stable C API that was dual licensed, you'd see a lot more studio uptake IMHO. Heck, even libc is dual licensed.
This all comes down to the GPL not being well received by most tech corporations. People can argue whether that's got merit or not. However it's a long standing fact that tech companies do not like having dependencies on GPL code that can "infect" their code base. Entertainment studios are the same. They're largely tech companies at their core that create art.
Sometimes (but not often) these plugins do need to be shared with other studios (or even the vendor - Netflix is starting to get fairly aggressive in asking for copies of the source work, but that doesn't really work well with every studio having a custom pipeline and different ways of doing rigging / deforming), but it looks like it's going that way. In this scenario, is "sharing" "distributing" from the license point-of-view?
Large VFX/Animation studios are not going to open source critical plugins that given them potential edges. They want them to be totally private and their IP.
The large studios have a lot of research / IP stuff going on as well, they are basically tech houses (hundreds of software devs), and they really care about IP (both software and the client's material).
and latest version requires release of encryption keys etc etc - all major studios WANT content protection to work and the GPL is explicit in its attacks on that
They want content protection on what? Their tooling? They want DRM on the plugins they write for the tools they use? How or why?
GPL has what is called anti-tivoisation / DRM. This license was designed to specifically target the entertainment industry.
Even Ubuntu had to get a different license for boot loader to avoid risks here
Again: why? Because they have a grudge against the GPL's anti-DRM?
That's still FUD. There is nothing that a studio would be doing with Blender where they would want to implement DRM.
Sure, they will want DRM to be used in the distribution of the content they make with Blender; but that is totally separate from Blender itself and the GPL. It's not like the film itself will contain a copy of their asset creation or rendering pipeline!
In terms of the tivoization / drm provisions - the GPL is viral - it only takes one screw up or chain of viral connection to blow their business up. Apple fought the govt to avoid unlocking a terrorists phone, that’s how hard they protect signing keys .
The issue is they don’t know who will use what where, and the viral aspect adds insane risk. Minecraft / roblox and other games may decide to add design pipelines or render chains. Or they may want to run the software on golden image VDI pools that are locked down.
Even Ubuntu was so worried about the chain risk they changed bootloader license away from latest GPl
Did I not just finish explaining how that is not true?
The GPL is only "viral" to software that it is licensed with, and extensions to that share meaningful data structures with that software.
The GPL does not cover content created by GPL licensed software.
> The issue is they don’t know who will use what where, and the viral aspect adds insane risk.
Except it's trivial to understand the "viral" aspect of the GPL. It's clearly explained in many places. Therefore, there is no risk at all.
> Minecraft / roblox and other games
Games? We're talking about motion picture and television studios. Then again, plenty of game devs use Blender in their asset creation pipeline without getting the GPL involved in their codebase.
> Or they may want to run the software on golden image VDI pools that are locked down.
So? What does that have to do with anything?
> Even Ubuntu was so worried about the chain risk they changed bootloader license away from latest GPl
I don't know anything about that, but I sincerely doubt the context for that decision is in any way similar there...
All I'm seeing here is FUD. Not one of your examples actually brought up a reason - outside irrational fear - to avoid using Blender to make movies.
Pixar is not open sourcing their pipeline - period. Do you not understand that these companies build giant and high value software around the various engines?
Listen - I didn't realize how little you understood. This is actually covered in the Blender FAQ's because it can really bite you (even if a small player) if you build an add-on to blender.
"Blender’s Python API is an integral part of the software, used to define the user interface or develop tools for example. The GNU GPL license therefore requires that such scripts (if published) are being shared under a GPL compatible license."
This is cool if you want to use stuff - they make that clear too. "Sharing Blender or Blender add-ons or scripts is always OK and not considered piracy." But for commercial players this is an absolute no go.
This is not FUD, this is hard reality, and no commercial player is going to tie into something like this.
Studios work together and with outsourcers. Sometimes that means sharing plugins. Under GPL that would mean they'd have to share their code which is strong IP.
I give all credit to Blender developers for doing the old, boring and important things. It's just very frustrating waiting for years and realizing that what was the vision a couple of years ago, very few things actually got done.
My guess is it mostly doesn’t happen because these shops aren’t in the software business and don’t want to be, so don’t know how to value engineers and don’t want to spend money on engineering they aren’t sure will pay off in this fiscal year.
I wonder what percentage of Blender enthusiasts DON'T have Boxcutter and HardOps installed at a minimum.
Now if Blender had a comparable API that VFX studios could build on Blender would have a better shot at eating Maya's lunch. I predict that smaller companies with smaller budgets and almost no custom software will be the early adopters of Blenders and will pave the way for bigger companies.
> OpenCL rendering kernels. The combination of the limited Cycles split kernel implementation, driver bugs, and stalled OpenCL standard has made maintenance too difficult.
I am not really up to date on the GPGPU world, but is OpenCL in such a bad shape that it is not really usable? If so that is very sad. Are there any alternative open hardware agnostic GPGPU apis or has CUDA eaten the entire market?
I believe an open stack can and will emerge, but it will take time and effort on all levels of the stack. It's possible to do pretty amazing things with Vulkan compute shaders, but the programming model is different than CUDA (it's not single-source), and the tooling support is not quite there.
In time, I am hopeful that WebGPU will gather more momentum, and be officially supported even in places where Vulkan requires janky adapter layers. But in its current form, it's very immature and far from being usable for real workloads.
OneAPI is in a rather good state considering it’s barely a release candidate now I’ll put my money on Blender support Intel GPUs sooner than AMD ones with Cycles X unless AMD will adopt OneAPI.
The current and previous generations of consumer AMD cards just don't work with ROCm and there's been no indication they ever will
Now you want to run this on the users machine. You are of course using an ancient OpenCL version, because very few vendors updates their OpenCL drivers. Situation has gotten so bad that the consortium had to basicallly roll back much of the newer standard because nobody sipported it.
Anyway, the users GPU has the right capabilities and should run your code fine. But it doesn’t. If you’re lucky, you get an error message. Often you don’t, either you get a cryptic error code with zero Google results, or the OpenCL compiler just crashes. That actually happens quite often.
In summary, if you want to support many different GPUs in different OSes, you’re in a world of pain, because everything is half-baked.
There was a letter by the Blender devs to Apple a couple years ago to get their shit together and fix their OpenCL driver. I don’t think they ever did, just deprecated it and told you to use Metal...
As someone who's done a fair bit of SIMD programming on CPU, and heard many scream that wide SIMD (like AVX512) is pointless when you have GPGPU, it's certainly eye-opening to see how poor a state cross-platform GPGPU development is in. Well, I suppose if you only care about Nvidia, CUDA does seem to be pretty good. Too bad it's Nvidia only.
I've heard people consider Vulkan Compute as an alternative. I had a quick look, and it doesn't seem like it supports integer operations (what I'm mostly doing), so doesn't seem viable for me, but I guess it could for a bunch of folk. Not familiar with Vulkan myself though, so corrections welcome.
Intel didn't take long to eat crow and ship the AMD64 instruction set in their CPUs as soon as it became clear they'd lost the 64-bit ISA game. AMD should have taken a lesson from that: if the market wants the other guy's API, you can implement it, customers will be pleased, and that gives you power over the API that you wouldn't have otherwise.
I think HIP is their attempt at that, as it's very similar to CUDA and is meant to be easy to port. Maybe there's reasons why they (or anyone else really) can't just adopt CUDA (licensing?), though that's beyond my knowledge.
Most examples seem to be using GLSL shaders for the kernel, but posts seem to indicate it uses SPIR-V as input [https://community.khronos.org/t/is-a-vulkan-compute-shader-d...]. And then you have threads like this [https://community.amd.com/t5/drivers-software/amd-dropped-sp...] saying that SPIR-V isn't supported on the AMD's Windows driver (I had similar issues myself trying to get SYCL examples to run), though I see other places running Vulkan Compute stuff on AMD+Windows. Maybe that only applies to SPIR-V with an OpenCL runtime?
Diagrams [https://www.khronos.org/assets/uploads/apis/2020-spir-landin...] seem to indicate that you can feed stuff like OpenCL and SYCL into SPIR-V (and then Vulkan Compute) instead of GLSL. For the former case, would you essentially still be using OpenCL, but just with a different runtime? (though articles like this [https://linuxreviews.org/The_State_Of_OpenCL_To_Vulkan_Compu...] seem to suggest OpenCL -> Vulkan isn't in a good state)
Most of the time, when people say OpenCL, they mean that an OpenCL driver is provided by the GPU vendor. That's what's in a particularly sorry state. Many vendors ship OpenCL but have deprecated it. AMD's ROCm is based on OpenCL, but they don't support it on all cards and there are problems.
The other thing that's picking up steam lately is using a lower level API such as Vulkan as the interface to the graphics hardware, and having a layer that runs the compute workload (whether OpenCL or something else) on top of that. In my opinion, this actually has a pretty good future. On Linux, Vulkan is obviously the way to go, on Windows it's supported by all major cards, and on mac it's possible to fake it with MoltenVK. This is what clspv and clvk are about, but from the article you posted these are not in usable shape yet. I think that might say more about the level of interest around OpenCL than anything else though. It's entirely possible that running compute on Vulkan becomes mainstream through other efforts like IREE than by porting OpenCL workloads.
In a couple years or so, there's a good chance the landscape will shift again, as WebGPU might be capable of running compute workloads well, and is likely to be supported by all vendors. Note that despite "web" in the name, it doesn't require a browser or other web technology. You can run prototypes of it today, but there are still huge chunks of the ecosystem missing.
That thread is talking about SPIR (the OpenCL binary shader format) in the OpenCL implementation, not SPIR-V (the Vulkan binary shader format, which has also been adopted by other APIs) in the Vulkan implementation.
Unless something has changed since then, or the post is inaccurate?
What is still a mess is the tool situation. You have to write your shaders in GLSL or HLSL (the latter is still missing some subgroup operation) and compile to SPIR-V. You also have to have CPU-side code to manage all resources, including memory allocation and putting in explicit pipeline barriers and other ways to manage the asynchrony. For someone who just wants to get their code running, it's pretty painful.
My own application is 2D rendering, but a lot of the motivation for improving Vulkan Compute is machine learning workloads. One of the projects to watch is IREE (https://google.github.io/iree/).
I've got some blog posts and tutorials in the pipeline, stay tuned.
I mean, I recognize that its the "graphics pipeline", but there's all sorts of performance discussion points. You want the data to be in a particular form as it traverses the graph. The various bits of the graph want to be "pipelinable", and parallelized if possible (possibly executing on a 'Remote' GPU). The data may-or-may not be local to a certain location. (Ex: data in DDR4 will need to be transferred to GPU, and back. Or if you're in a render-farm situation, you may need to TCP-send the data to the remote computer before that computer can move forward with its rendering).
And of course: all of those need to be balanced out with the featureset of the underlying program. Anyone can make a fast "sphere-only" renderer/raytracer, but Blender supports many different types of meshes, NURBS, and other features, which is probably the bulk of the complexity.
-----------
The depreciation of the OpenCL kernels is a bit sad, but understandable to anyone who has actually worked with OpenCL vs CUDA vs ROCm. The OpenCL kernels in Blender are particularly weirdly coded, so throwing them away might be the best option.
(See "Progressive Rendering" section for an example: https://blog.vjeux.com/2012/javascript/javascript-ray-tracer... )
Rendering every other pixel on a CPU in JavaScript is a huge advantage because ray tracing on that platform is incredibly slow compared to GPU ray tracing, and rendering is done sequentially one pixel at a time. Rendering on a GPU is very different because it handles thousands of rays at a time in parallel, and the typical time to get the first complete image on-screen is a fraction of a second. Today’s high end GPUs can trace tens of billions of rays per second, so with that kind of budget it’s easy to get through all the pixels of a 1080p image with multiple rays per pixel. The images in your blog post can be ray traced on today’s high end GPUs at 60hz with tens or even hundreds of samples per pixel for antialiasing.
Another reason a pixel interpolation scheme isn’t used on GPUs is because you don’t have random access to neighboring pixels during a single launch. What this means in practice is you’d have to do a ray tracing launch followed by the interpolation launch. The launches have some overhead, and the UX would be that you first see the checkerboard pattern all at once, and then later you get the interpolated image. You don’t get to see partial progress as you go, unless you’re breaking the image into tiled launches, and that slows down rendering and adds more complication. (Many pro renderers on the market do have tiled rendering to give progressive feedback, BTW).
On the GPU, maybe one of the closest things to what you describe that is being used in games today is DLSS; render a lower resolution image, then upscale to a higher resolution. Instead of interpolating neighbor pixels per se, it’s using a neural network to improve the interpolation based on the image content https://en.wikipedia.org/wiki/Deep_learning_super_sampling
There are approaches to deferred shading on the GPU that do something similar to what you’re talking about https://graphics.geometrian.com/research/dacs_in_hw.html
There is also denoising, which has the same high level goal as what you’re doing (fill in missing data to get a high quality preview faster), but uses a much more sophisticated interpolation algorithm, and rather than skipping pixels works on Monte Carlo images with low samples per pixel. https://developer.nvidia.com/optix-denoiser
You can get the difference between the surface normal and the bevel normal and use that as a "sharpness" value to mask things like wear on the corners of objects
https://docs.blender.org/manual/en/2.79/editors/3dview/navig...
Don't think that's common at all because that won't always work well. The difference between Cycles and Eevee is the lightning, materials, rasterization (compared to raytracing that Cycles does) and such.
If you're fixing your UVs, or adjusting the depth of a bump effect, or arranging a scene to see how objects' colors balance with each other, or tweaking the metal-ness of a material, Eevee works great as a preview even if your final render will be in Cycles. Eevee is particularly useful when working on an isolated object (minimal indirect lighting), vs seeing how an entire scene gets lit.
1) I'm using a Cycles-only shader node (which unfortunately I do a lot; see the thread below), or
2) I'm focused on lighting the full scene with all the indirection, or
3) I'm adjusting volumetric effects
Otherwise Eevee is a great stand-in
Cycles X will likely be OptiX only and then OptiX first for quite a while until a true cross vendor cross platform stack appears.
And antecdotally, OptiX is around 1.5-3x faster than CUDA with Cycles rendering.
Like, why tf did i buy the macbook pro with expensive discrete GPU and can't even use it to render GPU accelerated 3D. Seems like a primary use case
> CUDA 10.2 (Toolkit and NVIDIA driver) is the last release to support macOS for developing and running CUDA applications. Support for macOS will not be available starting with the next release of CUDA.
[0]: https://docs.nvidia.com/cuda/archive/10.2/cuda-toolkit-relea...
1. Nowhere did I mention Blender, although yes, this is a primary gripe
2. Even if I had, where does the inference that Blender somehow drove this come from?
3. Why leave out Metal2 and AMD frome the discussion?
Is Apple (Their GPUs (M1)) a major GPU hardware vendors?