PBR Articles Ever Going to be Completed?

Not sure how to contact the developers, so hopefully they view these forums or what not. There were some interesting articles about PBR being created by someone on the team. It doesn’t seem it was completed entirely, was wondering if it was ever going to be completed?

Articles: http://jmonkeyengine.org/301308/physically-based-rendering-part-3/

I found them very interesting. Tbh though I’ve seen a few examples of PBR and couldn’t tell the difference between the old diffuse/spec stuff.

I guess it was @nehon working on PBR? If not, he knows who is.
Also checkout our github branch about PBR:
https://github.com/jMonkeyEngine/jmonkeyengine/tree/PBRisComing

There you can find the code and could even give PBR a try :wink:

@JESTERRRRRR: PBR is not really meant to be “superior”, it’s only another “way” of creating metal-like Materials. Instead of having a texture created manually or downloaded, you simply play with the Parameters like Roughness, Metalness etc and you have a Material without the need of a Texture.

The other thing (Environment/HDR Maps for Reflection) are basically different and should also work on influencable reflective “common” Materials

(Atleast that’s what I understood)

omg… a year already…
I never completed this article serie, and I have no excuse actually…
Though I made quite some prgress on it, and as Darkchaos said, it’s all available in the PBRisComing branch.

BTW, the link to the PDF mentioned in the article (Thanks Epic Games) no longer works.

That’s fine, i would be interested in seeing it completed. There’s also one question i have, i get the concept of the metallic property, which your articles goes over. I just don’t know how it’s implemented, the Unreal Epic article as well doesn’t really say how it was implemented. It seems it reduces the environment map reflection but doesn’t entirely remove it, so just multiplying by the metallic value doesn’t seem correct. As for metallic being zero there should still be a small amount of reflection. Anyways i guess i can just look at your implementation now though.

@fba I don’t think you can direct link to the PDF, it is under “Real Shading in Unreal Engine 4 [course notes]” at http://blog.selfshadow.com/publications/s2013-shading-course/#course_content .

Metallic actually drives the mix between diffuse color and specular color.
Metallic 1 is pure reflection, so pure specular color and diffuse color is actualy black.
Metallic 0 is pure Diffuse, but there is still a hint of specular color.

Relevant code is here
https://github.com/jMonkeyEngine/jmonkeyengine/blob/PBRisComing/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.frag#L166

How do I get SDK with PBR?

by building it from the PBR branch

I have a problem with the build.

ant -f /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk build
Copying 1 file to /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/launcher/etc
suite.branding:
branding:
files-init:
release:
build:
com.jme3.gde.codepalette.taskdefs:
com.jme3.gde.codepalette.common-init:
com.jme3.gde.codepalette.projectized-common.basic-init:
com.jme3.gde.codepalette.basic-init:
com.jme3.gde.codepalette.files-init:
com.jme3.gde.codepalette.nbm-license-init:
com.jme3.gde.codepalette.build-init:
Scanning for modules in /media/ronn/Main/Soft/netbeans-8.0.2/extide
Scanning for modules in /media/ronn/Main/Soft/netbeans-8.0.2/harness
Scanning for modules in /media/ronn/Main/Soft/netbeans-8.0.2/ide
Scanning for modules in /media/ronn/Main/Soft/netbeans-8.0.2/java
Scanning for modules in /media/ronn/Main/Soft/netbeans-8.0.2/nb
Scanning for modules in /media/ronn/Main/Soft/netbeans-8.0.2/platform
Scanning for modules in suite /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk
com.jme3.gde.codepalette.init:
com.jme3.gde.codepalette.up-to-date:
com.jme3.gde.codepalette.compile:
com.jme3.gde.codepalette.jar-prep:
com.jme3.gde.codepalette.jar:
com.jme3.gde.codepalette.netbeans-extra:
com.jme3.gde.codepalette.javahelp:
com.jme3.gde.codepalette.module-auto-deps:
com.jme3.gde.codepalette.release:
com.jme3.gde.codepalette.module-xml-regular:
com.jme3.gde.codepalette.module-xml-autoload:
com.jme3.gde.codepalette.module-xml-eager:
com.jme3.gde.codepalette.chmod-executables:
com.jme3.gde.codepalette.verify-class-linkage:
1 file(s) have been successfully validated.
com.jme3.gde.codepalette.netbeans:
Generating Auto Update information for com.jme3.gde.codepalette
com.jme3.gde.core.libraries.taskdefs:
com.jme3.gde.core.libraries.common-init:
com.jme3.gde.core.libraries.projectized-common.basic-init:
com.jme3.gde.core.libraries.basic-init:
com.jme3.gde.core.libraries.files-init:
com.jme3.gde.core.libraries.nbm-license-init:
com.jme3.gde.core.libraries.build-init:
com.jme3.gde.core.libraries.init:
com.jme3.gde.core.libraries.up-to-date:
com.jme3.gde.core.libraries.compile:
com.jme3.gde.core.libraries.jar-prep:
com.jme3.gde.core.libraries.jar:
com.jme3.gde.core.libraries.netbeans-extra:
com.jme3.gde.core.libraries.javahelp:
com.jme3.gde.core.libraries.module-auto-deps:
com.jme3.gde.core.libraries.release:
com.jme3.gde.core.libraries.module-xml-regular:
com.jme3.gde.core.libraries.module-xml-autoload:
com.jme3.gde.core.libraries.module-xml-eager:
com.jme3.gde.core.libraries.chmod-executables:
com.jme3.gde.core.libraries.verify-class-linkage:
0 file(s) have been successfully validated.
com.jme3.gde.core.libraries.netbeans:
Generating Auto Update information for com.jme3.gde.core.libraries
com.jme3.gde.core.baselibs.taskdefs:
com.jme3.gde.core.baselibs.common-init:
com.jme3.gde.core.baselibs.projectized-common.basic-init:
com.jme3.gde.core.baselibs.basic-init:
com.jme3.gde.core.baselibs.files-init:
com.jme3.gde.core.baselibs.nbm-license-init:
com.jme3.gde.core.baselibs.build-init:
Distilling /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/public-package-jars/com-jme3-gde-core-libraries.jar from [/media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/com-jme3-gde-core-libraries.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/core-0.27.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/core-0.27.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/dense64-0.27.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/dense64-0.27.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/simple-0.27.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/simple-0.27.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/denseC64-0.27.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/denseC64-0.27.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jbullet.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jbullet.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/stack-alloc.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/stack-alloc.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/vecmath-1.3.1.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/vecmath-1.3.1.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/j-ogg-all-1.0.0.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/j-ogg-all-1.0.0.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/lwjgl-2.9.3.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/lwjgl-2.9.3.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/lwjgl-platform-2.9.3-natives-windows.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/lwjgl-platform-2.9.3-natives-windows.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/lwjgl-platform-2.9.3-natives-linux.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/lwjgl-platform-2.9.3-natives-linux.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/lwjgl-platform-2.9.3-natives-osx.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/lwjgl-platform-2.9.3-natives-osx.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jinput-2.0.5.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jinput-2.0.5.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jutils-1.0.0.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jutils-1.0.0.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jinput-platform-2.0.5-natives-linux.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jinput-platform-2.0.5-natives-linux.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jinput-platform-2.0.5-natives-windows.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jinput-platform-2.0.5-natives-windows.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jinput-platform-2.0.5-natives-osx.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jinput-platform-2.0.5-natives-osx.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/nifty-1.4.1.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/nifty-1.4.1.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/nifty-default-controls-1.4.1.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/nifty-default-controls-1.4.1.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/nifty-style-black-1.4.1.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/nifty-style-black-1.4.1.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/xpp3-1.1.4c.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/xpp3-1.1.4c.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/eventbus-1.4.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/eventbus-1.4.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jsr305-2.0.2.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jsr305-2.0.2.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jglfont-core-1.4.jar, /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jglfont-core-1.4.jar]
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/core-0.27.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/core-0.27.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/dense64-0.27.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/dense64-0.27.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/simple-0.27.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/simple-0.27.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/denseC64-0.27.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/denseC64-0.27.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jbullet.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jbullet.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/stack-alloc.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/stack-alloc.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/vecmath-1.3.1.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/vecmath-1.3.1.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/j-ogg-all-1.0.0.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/j-ogg-all-1.0.0.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/lwjgl-2.9.3.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/lwjgl-2.9.3.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/lwjgl-platform-2.9.3-natives-windows.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/lwjgl-platform-2.9.3-natives-windows.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/lwjgl-platform-2.9.3-natives-linux.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/lwjgl-platform-2.9.3-natives-linux.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/lwjgl-platform-2.9.3-natives-osx.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/lwjgl-platform-2.9.3-natives-osx.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jinput-2.0.5.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jinput-2.0.5.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jutils-1.0.0.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jutils-1.0.0.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jinput-platform-2.0.5-natives-linux.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jinput-platform-2.0.5-natives-linux.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jinput-platform-2.0.5-natives-windows.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jinput-platform-2.0.5-natives-windows.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jinput-platform-2.0.5-natives-osx.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jinput-platform-2.0.5-natives-osx.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/nifty-1.4.1.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/nifty-1.4.1.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/nifty-default-controls-1.4.1.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/nifty-default-controls-1.4.1.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/nifty-style-black-1.4.1.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/nifty-style-black-1.4.1.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/xpp3-1.1.4c.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/xpp3-1.1.4c.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/eventbus-1.4.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/eventbus-1.4.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jsr305-2.0.2.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jsr305-2.0.2.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/jme3-core-libraries/release/modules/ext/jglfont-core-1.4.jar does not exist; skipping
Classpath entry /media/ronn/Main/Work/Repository/jmonkeyengine-original/sdk/build/cluster/modules/ext/jglfont-core-1.4.jar does not exist; skipping
/media/ronn/Main/Soft/netbeans-8.0.2/harness/suite.xml:187: The following error occurred while executing this line:

Just thought these may help .

1 Like

What’s PBR? Where can I read about it? Thanks in advance.

PART-1- http://jmonkeyengine.org/299803/physically-based-rendering-part-one/
PART-2- http://jmonkeyengine.org/300495/physically-based-rendering-part-two/
PART-3- http://jmonkeyengine.org/301308/physically-based-rendering-part-3/

2 Likes