mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0024855: Revision of parameters of standard materials
Improve consistency and visual appearance of predefined OCCT materials in various rendering modes, including ray-tracing: - Increase the specular exponents (shininesses) for metallic surfaces: Brass, Bronze, Copper, Gold, Pewter, Silver, Steel, Chrome, Aluminum. - Revise specular colors for metals: Copper, Gold, Aluminum, Silver (according to "Real-Time Rendering, 3rd Edition", AK Peters 2008). - Increase diffuse reflection of metals: Silver, Aluminum, Chrome (to make them brighter in OpenGL mode). - Extend Material definition by Refraction Index. Advanced rendering methods based on shaders or ray-tracing can utilize it to produce refraction effects. In addition: - Introduce three translucent materials: Water, Glass, and Diamond. - Add Charcoal for modeling dark diffuse surfaces. Add new TCL-based sample (materials.tcl) and test case (tests/v3d/materials/bug24855).
This commit is contained in:
@@ -1034,12 +1034,13 @@ void Graphic3d_Structure::SetPrimitivesAspect (const Handle(Graphic3d_AspectFill
|
||||
// Back Material
|
||||
const Graphic3d_MaterialAspect& aBack = theAspFill->BackMaterial();
|
||||
// Light specificity
|
||||
myCStructure->ContextFillArea.Back.Shininess = float (aBack.Shininess());
|
||||
myCStructure->ContextFillArea.Back.Ambient = float (aBack.Ambient());
|
||||
myCStructure->ContextFillArea.Back.Diffuse = float (aBack.Diffuse());
|
||||
myCStructure->ContextFillArea.Back.Specular = float (aBack.Specular());
|
||||
myCStructure->ContextFillArea.Back.Transparency = float (aBack.Transparency());
|
||||
myCStructure->ContextFillArea.Back.Emission = float (aBack.Emissive());
|
||||
myCStructure->ContextFillArea.Back.Shininess = float (aBack.Shininess());
|
||||
myCStructure->ContextFillArea.Back.Ambient = float (aBack.Ambient());
|
||||
myCStructure->ContextFillArea.Back.Diffuse = float (aBack.Diffuse());
|
||||
myCStructure->ContextFillArea.Back.Specular = float (aBack.Specular());
|
||||
myCStructure->ContextFillArea.Back.Transparency = float (aBack.Transparency());
|
||||
myCStructure->ContextFillArea.Back.RefractionIndex = float (aBack.RefractionIndex());
|
||||
myCStructure->ContextFillArea.Back.Emission = float (aBack.Emissive());
|
||||
|
||||
// Reflection mode
|
||||
myCStructure->ContextFillArea.Back.IsAmbient = (aBack.ReflectionMode (Graphic3d_TOR_AMBIENT) ? 1 : 0);
|
||||
@@ -1077,12 +1078,13 @@ void Graphic3d_Structure::SetPrimitivesAspect (const Handle(Graphic3d_AspectFill
|
||||
// Front Material
|
||||
const Graphic3d_MaterialAspect& aFront = theAspFill->FrontMaterial();
|
||||
// Light specificity
|
||||
myCStructure->ContextFillArea.Front.Shininess = float (aFront.Shininess());
|
||||
myCStructure->ContextFillArea.Front.Ambient = float (aFront.Ambient());
|
||||
myCStructure->ContextFillArea.Front.Diffuse = float (aFront.Diffuse());
|
||||
myCStructure->ContextFillArea.Front.Specular = float (aFront.Specular());
|
||||
myCStructure->ContextFillArea.Front.Transparency = float (aFront.Transparency());
|
||||
myCStructure->ContextFillArea.Front.Emission = float (aFront.Emissive());
|
||||
myCStructure->ContextFillArea.Front.Shininess = float (aFront.Shininess());
|
||||
myCStructure->ContextFillArea.Front.Ambient = float (aFront.Ambient());
|
||||
myCStructure->ContextFillArea.Front.Diffuse = float (aFront.Diffuse());
|
||||
myCStructure->ContextFillArea.Front.Specular = float (aFront.Specular());
|
||||
myCStructure->ContextFillArea.Front.Transparency = float (aFront.Transparency());
|
||||
myCStructure->ContextFillArea.Front.RefractionIndex = float (aFront.RefractionIndex());
|
||||
myCStructure->ContextFillArea.Front.Emission = float (aFront.Emissive());
|
||||
|
||||
// Reflection mode
|
||||
myCStructure->ContextFillArea.Front.IsAmbient = (aFront.ReflectionMode (Graphic3d_TOR_AMBIENT) ? 1 : 0);
|
||||
|
Reference in New Issue
Block a user