max_luminance pass

This commit is contained in:
luboslenco 2018-03-07 23:37:47 +01:00
parent 32ce997de0
commit 2c2e42aec4
4 changed files with 73 additions and 0 deletions

View 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);
}

View 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"
}
]
}

View file

@ -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;
}
";
}

View file

@ -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()