From 829d523b798cdeeb20ee4c7625f81a040ab3d837 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Mon, 17 Oct 2022 14:00:27 -0700 Subject: [PATCH] Update Documentation/Materials/MatOverview.md --- Documentation/Classes.md | 6 +---- Documentation/Materials/MatOverview.md | 33 ++++++++++++++++------- Documentation/Materials/q3a_material.jpg | Bin 0 -> 26949 bytes 3 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 Documentation/Materials/q3a_material.jpg diff --git a/Documentation/Classes.md b/Documentation/Classes.md index a261eb89..5e2a3bee 100644 --- a/Documentation/Classes.md +++ b/Documentation/Classes.md @@ -53,8 +53,4 @@ Depending on the gamemode set by you in the server's Game_InitRules function, it ### Inventory This needs to be completed. -- NSWeapon (incomplete) - -### World Materials -This needs to be completed. -- NSMaterial (incomplete) \ No newline at end of file +- NSWeapon (incomplete) \ No newline at end of file diff --git a/Documentation/Materials/MatOverview.md b/Documentation/Materials/MatOverview.md index bf8fd288..3d536e17 100644 --- a/Documentation/Materials/MatOverview.md +++ b/Documentation/Materials/MatOverview.md @@ -6,23 +6,36 @@ In the idTech series of engines, **id Tech 3/Quake III Arena** was the first to introduce such a system, wrongly referred to back then as **shaders**. This was before vertex and fragment shaders were commonplace in the video-game asset pipeline. +![from pulsing tubes to various animated materials in Quake III Arena](q3a_material.jpg) + They effectively merged the Quake texture-prefix hacks and Quake II .wal surface flags into one plain text format. Starting with **id Tech 4/Doom III** in 2004, the name of **shader** was changed to **material** to avoid confusion with proper GPU oriented vertex and fragment shaders. -FTE has since coupled the old 'shader' syntax with proper GPU shaders using the [program](MatCommands.md) material command. +**FTEQW** has since coupled the old 'shader' syntax with proper GPU shaders using the [program](Documentation/Materials/commands/program.md) material command. ## What is a Material? -Materials are short text scripts that define the properties of a surface as it appears and functions in a game world (or compatible editing tool). By convention, the documents that contain these scripts usually has the same name as the texture set which contains the textures being modified (e.g; base, hell, castle, etc,). Several specific materials have also been created to handle special cases, like liquids, sky and special effects. + +Materials are short text scripts that define the properties of a surface as it both appears and functions in the game world. + +If you want your sky texture to be replaced with a **skybox**, you will have to write a material definition for that. + +If you want to have a surface that looks and acts like water, then you have to write a material for that too. Unlike earlier **id Tech** games no assumption over a surface should be made based on texture names alone. + +### When using older BSP formats... + +Then you can still use modern materials! While the engine may load a texture from a **.bsp** or **.wad** file directly, it will still (albeit internally) create a material for it. + +When ingame, look at your surface you want to replace with the console variable **r_showshaders** set to **1* - and you will see the path and the contents of the material you're looking at. You can use that information to override rendering for practically any surface, even when using old fileformats. ## Usage -When the engine looks for a texture, it will look for a material file in the file-tree first, then attempt to 'make one up' if only an image file is present. A rendereable surface will **always** have a material. The question is whether you provide it, or if the engine has to automatically generate one internally. +When the engine looks for a texture, it will look for a material file in the file-tree first, then it will attempt to 'make one up' if only an image file is present. A rendereable surface will **always** have a material. The question is whether you provide it, or if the engine has to automatically generate one internally. The file extension for materials in Nuclide is .mat. There are two ways of defining materials: -* A large .shader script file containing multiple materials inside the **./scripts/** folder (not recommended) -* One small .mat file with the same path as the texture. E.g: **models/weapons/handcannon/w_handcannon/w_handcannon.mat** handles **models/weapons/handcannon/w_handcannon/w_handcannon.tga** +- A large .shader script file containing multiple materials inside the **./scripts/** folder (not recommended) +- One small .mat file with the same path as the texture. E.g: **models/weapons/handcannon/w_handcannon/w_handcannon.mat** handles **models/weapons/handcannon/w_handcannon/w_handcannon.tga** A material file consists of a series of surface attributes (global scope) and rendering instructions formatted within braces ("{" and "}"). Below you can see a simple example of syntax and format for a single process, including the VMAP keywords or 'Surface Parameters', which follow the first bracket and a single bracketed 'stage': @@ -53,12 +66,14 @@ We then follow into the territory of defining specific rendering instructions wi [You can read more about those commands in detail right here.](MatCommands.md) ## Engine generated materials + If no material definition for a surface is present, the engine will create an internal one. It's generally a primitive material using the internal **defaultwall** shader if it's a world texture, the **defaultskin** texture if it's a model, or a **default2d** if it's a HUD element. -## Legacy materials +## Q3A style materials, without GLSL You can support old-style Q3A materials alongside modern shader oriented ones. + ``` { if $programs @@ -73,8 +88,6 @@ You can support old-style Q3A materials alongside modern shader oriented ones. endif } ``` -Here everything inside the **if $programs** block will only ever load if it's capable of handling the GLSL. -So if you have a card only performing well under the GL 1.X pipeline, the **else** path will take priority. -This means less graphical fidelity, but generally better performance on those old chipsets. -All of Quake III's shading language is supported in the else block. +Here everything inside the **if $programs** block will only ever load if it's capable of handling the GLSL. +So if the player has a card that does not support programmable shaders, the **else** path will take over. diff --git a/Documentation/Materials/q3a_material.jpg b/Documentation/Materials/q3a_material.jpg new file mode 100644 index 0000000000000000000000000000000000000000..86af33f8e101aa8fd131636ac401288d1a359425 GIT binary patch literal 26949 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