Where are Lambert of Phong shaders in Blender?

If you want these legacy type shaders - download an old copy of Blender.

I believe versions up to 2.79 still included Blender Internal - which was a scanline renderer. It was removed in Version 2.8 and up.

Rude. Everything belongs to the 21st century. It’s because of people like you, that make others uncomfortable, so they don’t use old CG algorithms because they feel shamed and humiliated, because they feel that if they do, they’ll be shamed and mocked by others. It doesn’t matter how old something is. What matters is what the artist wants to use.

Using outdated technology is not about humiliation or shaming. It’s about staying competitive and just competent in current day. There is a reason pretty much no one uses outdated technology and there is a reason these old algorithms are not just deprecated, but straight up removed from most of modern CG software.

Just leaving them in would be a big burden, because Cycles would have to properly support them, and they are not very compatible with modern physically based rendering, so they’d come with a giant block of workaround code that needs to be maintained and updated. That’s just not worth it for how little people would use them. Especially since their only use would be as a nostalgic gimmick.

If you want to use old technology for sentimental purposes, you are welcome to do so. Nothing prevents you from downloading Blender 2.4 and enjoying ancient rendering technology. It’s the same as retro computer community for example. Many people enjoy tinkering with old computers, like Commodore and Amiga, but no one in their right mind would use them as their daily driver. So it’s obvious no one expects to find Commodore BASIC out of the box in their Windows 10 or Linux installation, in the same way no one expects to find Blinn and Phong shaders in Blender 3.3.

2 Likes

Artistry isn’t about being competitive. If all you care about is being like everyone else (trendy and fashionable), then you aren’t so much an artist. Artistry, is when you use what you want to use, because you like the results you get. That doesn’t mean, it “does not belong in the 21st century”. It means it’s an old algorithm, that isn’t in newer software, but it does belong in the 21st century, because using it is not a crime. It doesn’t matter how “obsolete” or “outdated” something is. If someone likes the style, they have every right to use, and no one has any right to tell them, they are not being “competent in current day”, just because they like using older software, is like telling 50s car collectors, they are dumb for collecting old vehicles. I mean, pretty much all vehicles today are safer, cleaner, and more advanced. Why use an old car? I’ll tell you why. Because sometimes, old technology feels nicer and looks nicer in certain scenarios. Sometimes, some styles just can’t be achieved easily in modern times. So it doesn’t matter how old something is. Maybe it’s not in the newest software, but it belongs in the 21st century. You can use the old software, in the 21st century. Therefore it belongs.

None of these last three replies have anything to do with the topic at hand :thinking: Let’s let this discussion die, please, as the question has been answered, thanks!

1 Like

Not at all, that’s how you end up with bloated software - try Autodesk if you want this.
Lambert is just using Lambert’s cosine law, which is what Diffuse shader is doing at roughness 0. At roughness > 0, it switches to Oren-Nayar diffuse. Principled uses Disney Diffuse which takes it a bit further by replacing Oren-Nayar roughness with something that respects exit IOR instead - not same or even similar, but both have their uses. If you want Lambert, you already have it.
As for Phong/Blinn-Phong, why is this even a thing? All it does it shade fake highlights based on half-angle position of light sources and nothing else, with actual reflections faked or implemented otherwise. It is available within OSL if you absolutely want it. But it’s so outdated it doesn’t belong as a regular shader.
And both Lambertian and Phong can be setup using a bunch of math nodes. However it can’t scan through the hierarchy to find light positions, so you have to enter/link positions for lights within the node setup yourself, doing one entry for each light. Not worth it.

1 Like

You don’t need Autodesk. All you need is to make a new type of Blender Add-On. Blender Workspace Add-On. Where you can install legacy codes by choice.

Uh?

The title of the thread is literally asking where did the legacy shading models go, and the discussion in the last 3 posts above yours is about those legacy shading models. It could not be more relevant in fact. The original answer to the topic was “where”, and the discussion that unfolded is about “why”. Knowing not just where, but also why is important.

There are many of us on this forum for whom Blender is not just a hobby, but an actual job. We can’t afford deliver poor results by today standards just because of someone’s subjective view of what artistry is.

I’d like to know your thought process here. How did you arrive from using antique tools to criminality? I never even remotely claimed anything like that, so it sounds more like your own projection. Would you like to criminalize people who still have and use old wooden table radio at home? :slight_smile:

I’d be really surprised to see someone using rendering tech in Blender 2.4 or earlier, now in 2022, for living, and making dignifying amount of money. There may be some exceptions to the rule, but they’d just prove the opposite a rule.

I never claimed that. That’s once again your projection. I was talking about majority of people, who just want their software to act as amplifier of their skills, instead of using outdated technology in the name of some subjective virtue. Many of people want to use software to amplify their skill because they do 3D art for living, and in such environment, there is a competition.

People do drive old cars for the nostalgia, but you don’t see F1 cars from the 1980 racing against the F1 cars from 2022, because they’d straight up have no chance :slight_smile:

And it’s similar with old Blender and the old rendering tech included with it. No one prevents you from whipping out your Pentium 3 with Windows XP and running 2.4 on it to enjoy the good old times feels, but you just can’t reasonably request developers to keep those ancient pieces of code in modern Blender versions. They’d increase learning curve, they’d increase room for error for users and they’d add a lot more work for developers. It’s just a loss/loss scenario.

2 Likes

It’s possible to do phong shading within Blender - just not with Cycles.

Either download a version of Blender that still had Blender Internal Render bundled…or download a blender compatible renderer that has Phong (like POV ray).

There may be a kinda workaround for this type of look in cycles however. I created a shader a while back that gave an old school shader look - kinda like Phong and Blinn

image

Actually, Cycles still has the Phong_Ramp closure, which takes an Exponent and an Array of 8 colors. And it also has the Oren_Nayar closure, for Lambert shading.
But you can only use them from OSL.

edited: for completion, here’s a basic implementation of both closures:

#include <stdosl.h>

shader PhongRamp_shader(
    color Color1 = color(1.0, 1.0, 1.0),
    color Color2 = color(1.0, 1.0, 1.0),
    color Color3 = color(1.0, 1.0, 1.0),
    color Color4 = color(1.0, 1.0, 1.0),
    color Color5 = color(1.0, 1.0, 1.0),
    color Color6 = color(1.0, 1.0, 1.0),
    color Color7 = color(1.0, 1.0, 1.0),
    color Color8 = color(1.0, 1.0, 1.0),
    float Exponent = 1.0,
    vector Normal = N,
    output closure color BSDF = 0
    )
{
    color ColorR[8];
    ColorR[0] = Color1;
    ColorR[1] = Color2;
    ColorR[2] = Color3;
    ColorR[3] = Color4;
    ColorR[4] = Color5;
    ColorR[5] = Color6;
    ColorR[6] = Color7;
    ColorR[7] = Color8;
    BSDF = phong_ramp(Normal, Exponent, ColorR);   
}
#include <stdosl.h>

shader OrenNayar_shader(
    color Color = color(1.0, 1.0, 1.0),
    float Sigma = 1.0,
    vector Normal = N,
    output closure color BSDF = 0
    )
{
    BSDF = Color * oren_nayar(Normal, Sigma);   
}

Ah - ok cool thanks.

I guess the bottom line is - there are options to achieve what the OP asked for, or get pretty close to it in terms of aesthetics.

is not there some equivalent in EEVEE
for Lambert or phong bling things ?

is there some equivalent for lambert using PBR node ?

thanks
happy bl

Principled will most likely shade diffuse as pure Lambertian. There is no Oren-Nayar implemented for Eevee, so I can’t imagine there would be any Disney Diffuse. Even in Cycles at Principled roughness 0.5 (no specular), the difference between Diffuse (roughness 0) and Disney Diffuse are hard to spot - hard to decide to use one over the other.

3 posts were merged into an existing topic: Trying to replicate 2.79 Phong/Lambert shading