max_luminance pass
This commit is contained in:
parent
32ce997de0
commit
2c2e42aec4
19
Shaders/max_luminance_pass/max_luminance_pass.frag.glsl
Normal file
19
Shaders/max_luminance_pass/max_luminance_pass.frag.glsl
Normal file
|
@ -0,0 +1,19 @@
|
|||
#version 450
|
||||
|
||||
uniform sampler2D tex;
|
||||
|
||||
uniform vec2 texSize;
|
||||
|
||||
in vec2 texCoord;
|
||||
out vec4 fragColor;
|
||||
|
||||
void main() {
|
||||
vec3 col = vec3(0.0);
|
||||
for (int i = -1; i <= 1; ++i) {
|
||||
for (int j = -1; j <= 1; ++j) {
|
||||
vec3 v = texelFetch(tex, ivec2(texCoord * texSize * 2) + ivec2(i, j), 0).rgb;
|
||||
col = max(col, v);
|
||||
}
|
||||
}
|
||||
fragColor = vec4(col, 1.0);
|
||||
}
|
19
Shaders/max_luminance_pass/max_luminance_pass.json
Normal file
19
Shaders/max_luminance_pass/max_luminance_pass.json
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"contexts": [
|
||||
{
|
||||
"name": "max_luminance_pass",
|
||||
"depth_write": false,
|
||||
"compare_mode": "always",
|
||||
"cull_mode": "none",
|
||||
"links": [
|
||||
{
|
||||
"name": "texSize",
|
||||
"link": "_screenSize"
|
||||
}
|
||||
],
|
||||
"texture_params": [],
|
||||
"vertex_shader": "../include/pass.vert.glsl",
|
||||
"fragment_shader": "max_luminance_pass.frag.glsl"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -210,4 +210,34 @@ class CyclesFunctions {
|
|||
return col / (9.0 * blendFac);
|
||||
}
|
||||
";
|
||||
|
||||
public static var str_cotangentFrame = "
|
||||
mat3 cotangentFrame(const vec3 n, const vec3 p, const vec2 duv1, const vec2 duv2) {
|
||||
vec3 dp1 = dFdx(p);
|
||||
vec3 dp2 = dFdy(p);
|
||||
vec3 dp2perp = cross(dp2, n);
|
||||
vec3 dp1perp = cross(n, dp1);
|
||||
vec3 t = dp2perp * duv1.x + dp1perp * duv2.x;
|
||||
vec3 b = dp2perp * duv1.y + dp1perp * duv2.y;
|
||||
float invmax = inversesqrt(max(dot(t, t), dot(b, b)));
|
||||
return mat3(t * invmax, b * invmax, n);
|
||||
}
|
||||
mat3 cotangentFrame(const vec3 n, const vec3 p, const vec2 texCoord) {
|
||||
return cotangentFrame(n, p, dFdx(texCoord), dFdy(texCoord));
|
||||
}
|
||||
";
|
||||
|
||||
public static var str_octahedronWrap = "
|
||||
vec2 octahedronWrap(const vec2 v) {
|
||||
return (1.0 - abs(v.yx)) * (vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0));
|
||||
}
|
||||
";
|
||||
|
||||
public static var str_packFloat = "
|
||||
float packFloat(const float f1, const float f2) {
|
||||
float index = floor(f1 * 100.0); // Temporary
|
||||
float alpha = clamp(f2, 0.0, 1.0 - 0.001);
|
||||
return index + alpha;
|
||||
}
|
||||
";
|
||||
}
|
||||
|
|
|
@ -5,6 +5,8 @@ import arm.log as log
|
|||
import arm.make_state as state
|
||||
import arm.api
|
||||
|
||||
callback = None
|
||||
|
||||
def add_world_defs():
|
||||
wrd = bpy.data.worlds['Arm']
|
||||
rpdat = arm.utils.get_rp()
|
||||
|
@ -343,3 +345,6 @@ def build():
|
|||
wrd.world_defs += '_PenumbraScale'
|
||||
else:
|
||||
log.warn('Disabling soft shadows - "Armory Render Path - Cascades" requires to be set to 1 for now')
|
||||
|
||||
if callback != None:
|
||||
callback()
|
||||
|
|
Loading…
Reference in a new issue