Fixed ping-pong.
This commit is contained in:
parent
d5010e4bc3
commit
f290684ca4
|
@ -70,8 +70,8 @@ class FirstPersonController extends Trait {
|
|||
// Look
|
||||
// if (!locked) {
|
||||
if (Input.touch) {
|
||||
camera.rotate(new Vec4(1, 0, 0), Input.deltaY / 300);
|
||||
transform.rotate(new Vec4(0, 0, 1), -Input.deltaX / 300);
|
||||
camera.rotate(new Vec4(1, 0, 0), Input.deltaY / 200);
|
||||
transform.rotate(new Vec4(0, 0, 1), -Input.deltaX / 200);
|
||||
body.syncTransform();
|
||||
}
|
||||
|
||||
|
|
|
@ -336,24 +336,41 @@ def make_set_target(stage, node_group, node, target_index=1):
|
|||
targetNode = findNodeByLink(node_group, node, node.inputs[target_index])
|
||||
if targetNode.bl_idname == 'TargetNodeType':
|
||||
postfix = ''
|
||||
|
||||
if targetNode.inputs[7].default_value == True:
|
||||
if make_set_target.pong_target_stage != None:
|
||||
|
||||
if make_set_target.is_last_target_pong == True:
|
||||
make_set_target.is_last_two_targets_pong = True
|
||||
make_set_target.pong = not make_set_target.pong
|
||||
else:
|
||||
make_set_target.is_last_two_targets_pong = False
|
||||
|
||||
make_set_target.last_pong_target_pong = make_set_target.pong
|
||||
if make_set_target.pong == True:
|
||||
postfix = '_pong'
|
||||
make_set_target.pong_target_stage = stage
|
||||
make_set_target.pong_target_param_index = len(stage.params)
|
||||
|
||||
make_set_target.is_last_target_pong = True
|
||||
else:
|
||||
make_set_target.pong_target_stage = None
|
||||
if make_set_target.is_last_two_targets_pong == True:
|
||||
make_set_target.pong = not make_set_target.pong
|
||||
|
||||
make_set_target.is_last_target_pong = False
|
||||
if make_set_target.is_last_two_targets_pong == True:
|
||||
make_set_target.is_last_two_chain_broken = True
|
||||
make_set_target.is_last_two_targets_pong = False
|
||||
|
||||
targetId = targetNode.inputs[0].default_value + postfix
|
||||
else: # Framebuffer
|
||||
if make_set_target.pong_target_stage != None:
|
||||
if make_set_target.is_last_two_targets_pong == True:
|
||||
make_set_target.pong = not make_set_target.pong
|
||||
make_set_target.is_last_two_targets_pong = False
|
||||
targetId = ''
|
||||
stage.params.append(targetId)
|
||||
make_set_target.pong_target_stage = None
|
||||
make_set_target.pong_target_param_index = 0
|
||||
make_set_target.pong = False
|
||||
make_set_target.is_last_target_pong = False
|
||||
make_set_target.is_last_two_targets_pong = False
|
||||
make_set_target.is_last_two_chain_broken = False
|
||||
make_set_target.last_pong_target_pong = False
|
||||
|
||||
def make_clear_target(stage, node_group, node):
|
||||
stage.command = 'clear_target'
|
||||
|
@ -373,10 +390,14 @@ def make_bind_target(stage, node_group, node, target_index=1, constant_index=2):
|
|||
targetNode = findNodeByLink(node_group, node, node.inputs[target_index])
|
||||
if targetNode.bl_idname == 'TargetNodeType':
|
||||
postfix = ''
|
||||
if targetNode.inputs[7].default_value == True:
|
||||
if make_set_target.pong_target_stage != None:
|
||||
if make_set_target.pong == False:
|
||||
|
||||
if targetNode.inputs[7].default_value == True:
|
||||
if make_set_target.is_last_target_pong == False:
|
||||
if make_set_target.last_pong_target_pong == True:
|
||||
postfix = '_pong'
|
||||
elif make_set_target.pong == False:
|
||||
postfix = '_pong'
|
||||
|
||||
targetId = targetNode.inputs[0].default_value + postfix
|
||||
stage.params.append(targetId)
|
||||
stage.params.append(node.inputs[constant_index].default_value)
|
||||
|
|
|
@ -87,15 +87,12 @@ void main() {
|
|||
|
||||
float depth = mvpposition.z / mvpposition.w;
|
||||
|
||||
// occlusion
|
||||
// occlusion - pack with mask
|
||||
|
||||
// n /= (abs(n.x) + abs(n.y) + abs(n.z));
|
||||
// n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy);
|
||||
// n.xy = n.xy * 0.5 + 0.5;
|
||||
n /= (abs(n.x) + abs(n.y) + abs(n.z));
|
||||
n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy);
|
||||
|
||||
// gl_FragData[0] = vec4(n.xy, 1.0, depth);
|
||||
gl_FragData[0] = vec4(n.xyz, depth);
|
||||
gl_FragData[0] = vec4(n.xy, mask, depth);
|
||||
gl_FragData[1] = vec4(position.xyz, roughness);
|
||||
gl_FragData[2] = vec4(baseColor.rgb, metalness);
|
||||
gl_FragData[3] = vec4(mask, 0.0, 0.0, 0.0);
|
||||
}
|
||||
|
|
|
@ -144,13 +144,13 @@ void main() {
|
|||
vec4 g2 = texture(gbuffer2, texCoord); // Base color, metalness
|
||||
float ao = texture(ssaotex, texCoord).r;
|
||||
|
||||
// vec2 enc = g0.rg;
|
||||
// vec3 n;
|
||||
// n.z = 1.0 - abs(enc.x) - abs(enc.y);
|
||||
// n.xy = n.z >= 0.0 ? enc.xy : octahedronWrap(enc.xy);
|
||||
// n = normalize(n);
|
||||
vec2 enc = g0.rg;
|
||||
vec3 n;
|
||||
n.z = 1.0 - abs(enc.x) - abs(enc.y);
|
||||
n.xy = n.z >= 0.0 ? enc.xy : octahedronWrap(enc.xy);
|
||||
n = normalize(n);
|
||||
|
||||
vec3 n = g0.rgb;
|
||||
// vec3 n = g0.rgb;
|
||||
vec3 p = g1.rgb;
|
||||
//n = normalize(n);
|
||||
vec3 baseColor = g2.rgb;
|
||||
|
|
|
@ -9,7 +9,7 @@ precision mediump float;
|
|||
uniform sampler2D gbuffer0;
|
||||
uniform sampler2D gbuffer1;
|
||||
uniform sampler2D gbuffer2;
|
||||
uniform sampler2D gbuffer3;
|
||||
// uniform sampler2D gbuffer3;
|
||||
|
||||
uniform sampler2D tex;
|
||||
uniform mat4 prevVP;
|
||||
|
@ -43,7 +43,7 @@ void main() {
|
|||
vec4 color = texture(tex, texCoord);
|
||||
|
||||
// Do not blur masked objects
|
||||
if (texture(gbuffer3, texCoord).r == 1.0) {
|
||||
if (texture(gbuffer0, texCoord).b == 1.0) {
|
||||
gl_FragColor = color;
|
||||
return;
|
||||
}
|
||||
|
@ -61,49 +61,49 @@ void main() {
|
|||
// color += texture(tex, offset);
|
||||
|
||||
offset += velocity;
|
||||
if (texture(gbuffer3, offset).r != 1.0) {
|
||||
if (texture(gbuffer0, offset).b != 1.0) {
|
||||
color += texture(tex, offset);
|
||||
processed++;
|
||||
}
|
||||
|
||||
offset += velocity;
|
||||
if (texture(gbuffer3, offset).r != 1.0) {
|
||||
if (texture(gbuffer0, offset).b != 1.0) {
|
||||
color += texture(tex, offset);
|
||||
processed++;
|
||||
}
|
||||
|
||||
offset += velocity;
|
||||
if (texture(gbuffer3, offset).r != 1.0) {
|
||||
if (texture(gbuffer0, offset).b != 1.0) {
|
||||
color += texture(tex, offset);
|
||||
processed++;
|
||||
}
|
||||
|
||||
offset += velocity;
|
||||
if (texture(gbuffer3, offset).r != 1.0) {
|
||||
if (texture(gbuffer0, offset).b != 1.0) {
|
||||
color += texture(tex, offset);
|
||||
processed++;
|
||||
}
|
||||
|
||||
offset += velocity;
|
||||
if (texture(gbuffer3, offset).r != 1.0) {
|
||||
if (texture(gbuffer0, offset).b != 1.0) {
|
||||
color += texture(tex, offset);
|
||||
processed++;
|
||||
}
|
||||
|
||||
offset += velocity;
|
||||
if (texture(gbuffer3, offset).r != 1.0) {
|
||||
if (texture(gbuffer0, offset).b != 1.0) {
|
||||
color += texture(tex, offset);
|
||||
processed++;
|
||||
}
|
||||
|
||||
offset += velocity;
|
||||
if (texture(gbuffer3, offset).r != 1.0) {
|
||||
if (texture(gbuffer0, offset).b != 1.0) {
|
||||
color += texture(tex, offset);
|
||||
processed++;
|
||||
}
|
||||
|
||||
offset += velocity;
|
||||
if (texture(gbuffer3, offset).r != 1.0) {
|
||||
if (texture(gbuffer0, offset).b != 1.0) {
|
||||
color += texture(tex, offset);
|
||||
processed++;
|
||||
}
|
||||
|
|
|
@ -70,13 +70,13 @@ void main() {
|
|||
vec4 g0 = texture(gbuffer0, texCoord);
|
||||
vec4 g1 = texture(gbuffer1, texCoord);
|
||||
|
||||
// vec2 enc = g0.rg;
|
||||
// vec3 N;
|
||||
// N.z = 1.0 - abs(enc.x) - abs(enc.y);
|
||||
// N.xy = N.z >= 0.0 ? enc.xy : octahedronWrap(enc.xy);
|
||||
// N = normalize(N);
|
||||
vec2 enc = g0.rg;
|
||||
vec3 N;
|
||||
N.z = 1.0 - abs(enc.x) - abs(enc.y);
|
||||
N.xy = N.z >= 0.0 ? enc.xy : octahedronWrap(enc.xy);
|
||||
N = normalize(N);
|
||||
|
||||
vec3 N = g0.rgb;
|
||||
// vec3 N = g0.rgb;
|
||||
vec3 P = g1.rgb;
|
||||
|
||||
// Get the current pixel's positiom
|
||||
|
|
|
@ -161,6 +161,10 @@ vec4 rayCast(vec3 dir) {
|
|||
return vec4(0.0, 0.0, 0.0, 0.0);
|
||||
}
|
||||
|
||||
vec2 octahedronWrap(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));
|
||||
}
|
||||
|
||||
void main() {
|
||||
float roughness = texture(gbuffer1, texCoord).a;
|
||||
float reflectivity = 1.0 - roughness;
|
||||
|
@ -168,7 +172,14 @@ void main() {
|
|||
discard;
|
||||
}
|
||||
|
||||
vec4 viewNormal = vec4(texture(gbuffer0, texCoord).rgb, 1.0);
|
||||
vec4 g0 = vec4(texture(gbuffer0, texCoord).rgb, 1.0);
|
||||
vec2 enc = g0.rg;
|
||||
vec3 n;
|
||||
n.z = 1.0 - abs(enc.x) - abs(enc.y);
|
||||
n.xy = n.z >= 0.0 ? enc.xy : octahedronWrap(enc.xy);
|
||||
n = normalize(n);
|
||||
|
||||
vec4 viewNormal = vec4(n, 1.0);//vec4(texture(gbuffer0, texCoord).rgb, 1.0);
|
||||
if (viewNormal.z <= 0.9) discard; // Only up facing surfaces for now
|
||||
viewNormal = tiV * normalize(viewNormal);
|
||||
|
||||
|
|
Loading…
Reference in a new issue