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:44] – [TGorillaShaderData] admin | 0.8.4:default-material [2023/01/31 13:58] – [Calling an individual functions] admin | ||
---|---|---|---|
Line 149: | Line 149: | ||
- <6> [TGorillaGLSLSurfaceShaderExec] | - <6> [TGorillaGLSLSurfaceShaderExec] | ||
- <7> [TGorillaGLSLMergedColorOutputNode] | - <7> [TGorillaGLSLMergedColorOutputNode] | ||
- | - <8> [TGorillaGLSLFragColorOutputNode] | + | - <8> [TGorillaGLSLBrightnessColorNode] |
- | - <9> [TGorillaGLSLColorClipNode] | + | - <9> [TGorillaGLSLFragColorOutputNode] |
- | - <10> [TGorillaGLSLFogApplyNode] | + | - <10> [TGorillaGLSLColorClipNode] |
- | - <11> [TGorillaGLSLWeightedBlendedOITNode] | + | - <11> [TGorillaGLSLFogApplyNode] |
+ | - <12> [TGorillaGLSLWeightedBlendedOITNode] | ||
</ | </ | ||
===== Node Classes ===== | ===== Node Classes ===== | ||
Line 303: | Line 304: | ||
* **tex2D()** | * **tex2D()** | ||
* **tex2DProj()** | * **tex2DProj()** | ||
- | * **tex3d()** | + | * **tex3D()** |
* **texCube()** | * **texCube()** | ||
* **Texture_GetNormal()** | * **Texture_GetNormal()** | ||
Line 402: | 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 1344: | 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 ===== | ||