Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
0.8.4:default-material [2022/06/26 09:45] – [Default Fragment Shader] admin | 0.8.4:default-material [2023/01/31 13:58] – [Calling an individual functions] admin | ||
---|---|---|---|
Line 304: | Line 304: | ||
* **tex2D()** | * **tex2D()** | ||
* **tex2DProj()** | * **tex2DProj()** | ||
- | * **tex3d()** | + | * **tex3D()** |
* **texCube()** | * **texCube()** | ||
* **Texture_GetNormal()** | * **Texture_GetNormal()** | ||
Line 403: | Line 403: | ||
| SurfaceShader | TGorillaGLSLSurfaceShaderExec| Calls **SurfaceShader(LOCALS); | | SurfaceShader | TGorillaGLSLSurfaceShaderExec| Calls **SurfaceShader(LOCALS); | ||
| SurfaceShader | TGorillaGLSLMergedColorOutputNode |It will compute the final **LOCALS.SumColor** depending if GORILLA_GLSL_DEFINE_LIGHTING, | | SurfaceShader | TGorillaGLSLMergedColorOutputNode |It will compute the final **LOCALS.SumColor** depending if GORILLA_GLSL_DEFINE_LIGHTING, | ||
+ | | SurfaceShader | TGorillaGLSLBrightnessColorNode | It will multiply **_Brightness** value with **LOCALS.SumColor** (since v0.8.4.2322)| | ||
| SurfaceShader | TGorillaGLSLFragColorOutputNode | It will apply material alpha value to **LOCALS.Alpha** and finally write **vec4(LOCALS.SumColor, | | SurfaceShader | TGorillaGLSLFragColorOutputNode | It will apply material alpha value to **LOCALS.Alpha** and finally write **vec4(LOCALS.SumColor, | ||
| SurfaceShader | TGorillaGLSLColorClipNode | If GORILLA_GLSL_DEFINE_USE_COLORCLIP is activated, it will discard the fragment if threshold was reached. | | | SurfaceShader | TGorillaGLSLColorClipNode | If GORILLA_GLSL_DEFINE_USE_COLORCLIP is activated, it will discard the fragment if threshold was reached. | | ||
Line 1345: | Line 1346: | ||
+ | ==== Changing Shaders at DesignTime ==== | ||
+ | Since 0.8.4 it's possible to modify your default shader at designtime, by using published properties *VertexShader* or *SurfaceShader*. | ||
+ | |||
+ | Simply select you material source and open the text editor of the property. An empty GLSL function should be visible depending on the shader used. | ||
+ | |||
+ | For VertexShader: | ||
+ | <file glsl> | ||
+ | void VertexShader(inout TLocals DATA){ | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | For SurfaceShader (Fragment/ | ||
+ | <file glsl> | ||
+ | void SurfaceShader(inout TLocals DATA){ | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | Here is a example to create a wobbling effect in the vertex shader: | ||
+ | |||
+ | <file glsl> | ||
+ | vec2 DELPHI_HASH2(vec2 n){ | ||
+ | return fract(sin(n)*1399763.5453123); | ||
+ | } | ||
+ | |||
+ | float DELPHI_NOISE(vec2 st){ | ||
+ | vec2 i = floor(st); | ||
+ | vec2 f = fract(st); | ||
+ | |||
+ | vec2 u = f * f * (3.0 - 2.0 * f); | ||
+ | |||
+ | float a = dot(DELPHI_HASH2(i + vec2(0.0, | ||
+ | float b = dot(DELPHI_HASH2(i + vec2(1.0, | ||
+ | float c = dot(DELPHI_HASH2(i + vec2(0.0, | ||
+ | float d = dot(DELPHI_HASH2(i + vec2(1.0, | ||
+ | |||
+ | return mix(mix(a, b, u.x), mix(c, d, u.x), u.y); | ||
+ | } | ||
+ | |||
+ | vec3 DELPHI_WOBBLE(vec3 pos, float time, float intensity){ | ||
+ | return vec3(pos.x, pos.y + (DELPHI_NOISE(vec2(pos.x, | ||
+ | } | ||
+ | |||
+ | void VertexShader(inout TLocals DATA){ | ||
+ | DATA.Position.xyz = DELPHI_WOBBLE(DATA.Position.xyz, | ||
+ | |||
+ | DATA.TransfVertexPos = _ModelMatrix * DATA.Position; | ||
+ | DATA.WorldViewProjVertPos = _ModelViewProjectionMatrix * DATA.Position; | ||
+ | } | ||
+ | </ | ||
===== Properties ===== | ===== Properties ===== | ||