I don't think there is anything wrong with writting a tutorial on the subject, from the standpoint of a beginner. An introductory document that assumes NOTHING on the writters part.

What i have encounted is every referance pointed to for a beginner to start REALY ISN'T set up/written for a REAL beginner to understand the basics before jumping in feet first with allot of examples that inodate the reader ( closest I found was the HLSL PDF on teh WIKI that was of any beginner help).

Most everyting else realy approachs the user has to already know X ammount. ( don;t read them based on what is contained in the doc, but what is NOT when seen from teh eyes of someone with NO knowlage of even the who, what , where ,when why of shaders)

Shaders may be an very advanced topic, but it doesn't have to be written/explained ONLY in terms to 'advanced' users comprehension.

How to work HLSL WITH 3DGS may be in the manual, but as we all know the manual isn;t usualy clear to the person new to a particular topic and users then struggle with it via trail and error untill the perverbial lightbulb 'DING' clicks on "AH-HA, THAT's how it works!"

Reminds me of ent_move and my struggle understanding how to move an entity using just that instruction.

ONLY place it was documented/explained was the manual. Not in ANY tutorial ( and I seriously digged across the internet for tutorials, docs anything.) Everytime I asked for a brief explination of using it. A Community Stonewall as well. It was like either a closely guarded secret or Knowone could realy explain it. After couple of months I puzzeled it out myself .

I found as I went this was not an uncommon occurance. Much is DOCUMENTED, but not EXPLAINED.

Shaders/marerials seem to be in the same boat. There is much in the way of documentation, what is wrong is EXPLINATION or the lack of actualy.

Explination is a BUILDING process.

example: you can't properly explain how to use ent_move without first explaining what a vector is and he differnt sort of vectors the we uses. that falls back to explaining what a varible is.
You have to cover 'scope' and 'relative' in relationship to an entity.
you have to cover vector math.

You have to cover eular angles, what they are and are not. how are angles handled in 3DGS game levels and how to do vector angle math.

So the same with shaders/materials. need to go BACK a BASIC level of CORE elements. The fundimental basic parts. Yes plenty of documents on HLSL, what is missing is the EXPLINATION of the 3DGS end of the process. Just can't add an .fx file in your work folder, assign it to an entity like you do with an action and away you go. Not all shaders are even IN fx files, its all scripted.

And that is where the real problem is. We don't need a tutorial/workshop at THIS time on HOW to make particular shaders as stated there are many such documents that float around that just need to be found and transposed to DX9 or some such needs. I don;t think there is anything that CAN'T be taught to someone that has no idea from the beginning. It's all in the matter of approach.


Now, looking at the documents users HAVE provided for help ( forum threads, WIKI posts) by reading them they do give some explinations, but from an introductory level invividual they are all a bit over the top.

THis MAY be allot of work, especialy to those that understand the workings already ( easier to understand then explain in SIMPLE terms) and I also understand some people have the ability to learn something but don't naturaly have the ability to teach it to others.

But such a compiled explination of the workings would:

1. realy cut down on the Q&A of the basics
2. get more people up to a competent UNDERSTANDING level providing a much larger spring board of members for shader workings/projects in the community that can provide better feedback, testing and improvments.

I'm not stating its ANYONEs responsability to write such a document, but it would be far eaiser process if a few experianced users took a couple inexperianced shader/material users that can write tuts from an intro level point of view and guided them through the process of learning the subject and provided feedback on proofreading tuts as they get written.

The more the number experianced/knowlagable users provide input the more the outcome can be in such tutorials. They don;t have to WRITE the tutorial(s) per say but guide a few others lerning from the ground up to a compentent level and provide feedback though the process. The tuts themselves will sort of build themselves from this dialog/learning process.


Give you an example of what I mean:

Lets start from the beginning here. What is a shader.

Myself: I break them down ( from what i know so far) in 3 catagories

Material.
Fixed Function.
Shader.

Shaders get broken down into 2 basic parts

Vertex.
Pixel.

Now as How "i" understand them in simple form:

Material: an advanced way of controling how lights interact with a surface.

We have the basic understanding of using normal 3DGS settigns of like UNLIT, Albedo, Ambient. A material gives you more advanced control on how light interacts with your textures/entitis by allowing you to adjust the ammount of Red Green and Blue light colors either is reflected (albedo), flattened (diffuse), self iluminates ( ambient ) or 'whites out' ( specular/flare).

For example, if you wanted to make something look more metalic you would want to have some reflectivness brighter colors, and diffusion of darker colors ( makes the dark areas look flat) and some specular of whiteish level colors

A fixed function: I don't know the differnace to this but obviously there is else others wouldn;t recomend certain effects to be done by fixed function over a shader equivalent.

Shader: A process where, prior to the engine drawing/updating the video display each frame (render), you grab a specific object, area, chunk, piece of the 3D world represented in a game level. Transpose or convert it's data to a 2 dimensional mapping, then through a process( or multiple processes) manipulate that data such as change colors, move possition, alter how light effects it ( even more than a material) overlay a texture... and the list goes on.
That manipulated data is then transfered back into the 3D world enviroment, where the engine then does its process to draw the 3D world data onto the video screen.

Vertex shader: As we know objects are defined in a 3D world by a set of points ( vertexs) that are set in referance to a single point in space ( the origin point). an objects surface is defined by 3 vertex points connected. A vertex shader allows us to manipulate the data(texture surface) between those 3 points in space by referancing those 3 vertexs.

Pixel shader: via the 3 vertex points that define a surface, we can actualy referance an individual pixels x/y/z location between those 3 vertexs points. which allows you to then manipulate the pixels themselves.




Now as a feedback you can correct me how I understand these things.
Keep in mind , say that I'm a new 3DGS user, my knowlage of computers is limited ( and you don;t know what I do and do not know). SO avoid teh technical at first. If you ahve to use a technical term ( say like, PIPELINE) give a very brief explination of what that means/is.

The process then contiunes: So I start with the simplest of the above... materials:

A basic matieral is defined via script much like a function, action, panel etc.

You have a data TYPE: MATERIAL
You give it a name: user defined name that follows c-script name definition restrictions.
and it has a structure: { }

example:

MATERIAL mat_dothis
{

}

some of the basic material instructions you can use in this structure:

ambient_red
ambient_green
ambient_blue

control of how much ambience ( self lit) a surface/object is. values are adjustable range from 0-255 for each of the 3 colors

diffuse_red
diffuse_green
diffuse_blue

controls how much light is NOT reflected by a surface/object. values range 0-255 for each color

emissive_red
emissive_green
emissive_blue

color emmited by the material itself and is added to the surface/objects lighting. ranges of 0-255

specular_red
specular_green
specular_blue

the influace of dynamic lights on the surface/object to create highlights (flares)

power

sharpenss of the specular highlights... range 0-10 power set to 0 turns off specular highlights

albedo

overall influance of SUNLIGHT on the surfance/object range 0-100. 0 not effected by sunlight, 100 sunlight fully reflected off surface, ignores shadowmaps.

so a possible material would look liek this:

material mat_grimber
{
specular_red = 50;
specular_green = 20;
specular_blue = 60;
power = 3;
diffuse_red = 20;
diffuse_green = 15;
diffuse_blue = 40;
}

experianced users comments, pointers, suggestions, additions, corrections


and onward it would go. as it builds further on the tutorial would build itself.