[x3d-public] Physically-Based Rendering and other material/lighting upgrades in X3D

Michalis Kamburelis michalis.kambi at gmail.com
Fri Jul 3 12:54:11 PDT 2020


Hi,

I did a presentation about my pull request introducing PBR and other
material/lighting upgrades to X3D 4.0 today. There will be a video of it
soon :) Here's a bunch of additional information:

1. The short summary of the changes is on
https://github.com/michaliskambi/x3d-tests/wiki/X3D-version-4:-New-features-of-materials,-lights-and-textures
. If you're in a hurry, browse just this one document to know what's going
on :)

2. If you are interested in details, the pull request is on
https://github.com/Web3DConsortium/X3D/pull/8 (needs access to Web3D GitHub
repository).

    And if you want to know the rationale behind some decisions, a lot of
it is collected on
https://github.com/michaliskambi/x3d-tests/wiki/How-to-add-PBR-to-X3D%3F .

  The examples are in https://github.com/michaliskambi/x3d-tests/ . Castle
Game Engine and view3dscene support almost everything described there, so
you can just get https://castle-engine.io/view3dscene.php and try it out :)

3. For those of you already familiar with my proposal (I know at least that
Doug Sanden from FreeWRL already implemented a significant portion of it),
here is a list of important changes that happened in the last 3 months.
Hopefully this is useful, if you want to update your implementations. Of
course the PR contains all the details:

    3.1. Added occlusionTexture, occlusionTextureChannel, occlusionStrength
to PhysicalMaterial and Material .

    3.2. shininessTexture now takes the information from alpha channel.
This way specularTexture (that looks at RGB) and shininessTexture can be
combined in one image.

    3.3. Previous xxxTextureChannel fields have been replaced by
xxxTextureMapping . They work differently (string ids, matching "mapping"
field in texture coordinates / transforms). And they are called better
("channel" was confusing, as the word has a different meaning in context of
images). There is a big section in PR documenting how it works.

    3.4. Abstract types X3DSingleTextureNode, X3DSingleTextureTransform,
X3DSingleTextureCoordinate added. They allow to use the type-checking
system in a natural way, and are required by the above "mapping" mechanism.

    3.5. Lighting equations completely reworked, to take into account
UnlitMaterial, PhysicalMaterial, consistent RGB/grayscale treatment,
updates for ColorRGBA (it was missing from X3D 3 lighting equations). It is
also hopefully easier to read and even implement now -- I expanded various
abbreviations in previous equations.

    3.6. Light source intensity is now unbounded (in case of physical
model, it has a physical interpretation, which is unbounded; in case of
Phong lighting, there was no reason for a 1.0 limit anyway -- it didn't
protect the result from going over 1.0).

    3.7. The lighting equations now also contain clear advice on what to do
when you have to do Gouraud shading (right now, each browser does whatever
seems natural, but it is not always "obvious what to do in Gouraud shading"
in case of X3D v4 with new textures).

    3.8. Levels have been updated in the "Shape" component to account for
new nodes.

    3.9. normalScale was added alongside the normalTexture field.

Best regards,
Michalis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200703/d87eccc7/attachment.html>


More information about the x3d-public mailing list