Fix wpos write
This commit is contained in:
parent
d7be94d6e1
commit
140e69fde8
|
@ -126,9 +126,9 @@ vec2 getProjectedCoord(vec3 hitCoord) {
|
|||
}
|
||||
float getDeltaDepth(vec3 hitCoord) {
|
||||
vec2 texCoord = getProjectedCoord(hitCoord);
|
||||
vec4 g0 = texture(gbuffer0, texCoord);
|
||||
float depth = texture(gbufferD, texCoord).r * 2.0 - 1.0;
|
||||
// TODO: store_depth
|
||||
// vec4 g0 = texture(gbuffer0, texCoord);
|
||||
// float depth = (1.0 - g0.a) * 2.0 - 1.0;
|
||||
vec3 wpos = getPos2(invVP, depth, texCoord);
|
||||
float d1 = length(eye - wpos);
|
||||
|
|
|
@ -38,7 +38,6 @@ def build_node_tree(node_group):
|
|||
# Make sure root node exists
|
||||
roots = get_root_nodes(node_group)
|
||||
created_nodes = []
|
||||
print(roots)
|
||||
for rn in roots:
|
||||
name = '_' + rn.name.replace('.', '_').replace(' ', '')
|
||||
buildNode(node_group, rn, f, created_nodes)
|
||||
|
|
|
@ -33,22 +33,36 @@ def make_finalize(con_mesh):
|
|||
if frag.contains('dotNV') and not frag.contains('float dotNV'):
|
||||
frag.prepend('float dotNV = max(dot(n, vVec), 0.0);')
|
||||
|
||||
write_wpos = False
|
||||
if frag.contains('vVec') and not frag.contains('vec3 vVec'):
|
||||
if is_displacement:
|
||||
tese.add_out('vec3 eyeDir')
|
||||
tese.add_uniform('vec3 eye', '_cameraPosition')
|
||||
tese.write('eyeDir = eye - wposition;')
|
||||
|
||||
else:
|
||||
vert.add_out('vec3 eyeDir')
|
||||
vert.add_uniform('vec3 eye', '_cameraPosition')
|
||||
vert.write('eyeDir = eye - wposition;')
|
||||
write_wpos = True
|
||||
frag.prepend('vec3 vVec = normalize(eyeDir);')
|
||||
|
||||
export_wpos = False
|
||||
if frag.contains('wposition') and not frag.contains('vec3 wposition'):
|
||||
if not is_displacement: # Displacement always outputs wposition
|
||||
vert.add_uniform('mat4 W', '_worldMatrix')
|
||||
vert.add_out('vec3 wposition')
|
||||
vert.write('wposition = vec4(W * spos).xyz;')
|
||||
export_wpos = True
|
||||
|
||||
if export_wpos:
|
||||
vert.add_uniform('mat4 W', '_worldMatrix')
|
||||
vert.add_out('vec3 wposition')
|
||||
vert.write_pre = True
|
||||
vert.write('wposition = vec4(W * spos).xyz;')
|
||||
vert.write_pre = False
|
||||
elif write_wpos:
|
||||
vert.add_uniform('mat4 W', '_worldMatrix')
|
||||
vert.write_pre = True
|
||||
vert.write('vec3 wposition = vec4(W * spos).xyz;')
|
||||
vert.write_pre = False
|
||||
|
||||
def make_base(con_mesh, parse_opacity):
|
||||
global is_displacement
|
||||
|
@ -60,9 +74,7 @@ def make_base(con_mesh, parse_opacity):
|
|||
tese = None
|
||||
|
||||
vert.add_uniform('mat3 N', '_normalMatrix')
|
||||
vert.write_pre = True
|
||||
vert.write('vec4 spos = vec4(pos, 1.0);')
|
||||
vert.write_pre = False
|
||||
vert.write_main_header('vec4 spos = vec4(pos, 1.0);')
|
||||
|
||||
if mat_utils.disp_linked(mat_state.output_node):
|
||||
is_displacement = True
|
||||
|
@ -147,7 +159,7 @@ def make_base(con_mesh, parse_opacity):
|
|||
vert.add_out('vec3 wnormal')
|
||||
write_norpos(vert)
|
||||
frag.write_pre = True
|
||||
frag.write('vec3 n = normalize(wnormal);')
|
||||
frag.write_main_header('vec3 n = normalize(wnormal);')
|
||||
frag.write_pre = False
|
||||
|
||||
if tese != None:
|
||||
|
|
|
@ -3,6 +3,7 @@ import arm.material.mat_state as mat_state
|
|||
import arm.material.mat_utils as mat_utils
|
||||
import arm.material.make_skin as make_skin
|
||||
import arm.material.make_tess as make_tess
|
||||
import arm.material.make_mesh as make_mesh
|
||||
|
||||
def make(context_id, rpasses):
|
||||
con_shadowmap = mat_state.data.add_context({ 'name': context_id, 'depth_write': True, 'compare_mode': 'less', 'cull_mode': 'clockwise', 'color_write_red': False, 'color_write_green': False, 'color_write_blue': False, 'color_write_alpha': False })
|
||||
|
@ -14,7 +15,7 @@ def make(context_id, rpasses):
|
|||
tese = None
|
||||
|
||||
# frag.add_out('vec4 fragColor')
|
||||
vert.write('vec4 spos = vec4(pos, 1.0);')
|
||||
vert.write_main_header('vec4 spos = vec4(pos, 1.0);')
|
||||
|
||||
# TODO: pass vbuf with proper struct
|
||||
vert.write('vec3 t1 = nor; // TODO: Temp for d3d')
|
||||
|
@ -109,4 +110,6 @@ def make(context_id, rpasses):
|
|||
|
||||
# frag.write('fragColor = vec4(0.0);')
|
||||
|
||||
make_mesh.make_finalize(con_shadowmap)
|
||||
|
||||
return con_shadowmap
|
||||
|
|
|
@ -13,6 +13,7 @@ class Shader:
|
|||
self.functions = {}
|
||||
self.main = ''
|
||||
self.main_pre = ''
|
||||
self.main_header = ''
|
||||
self.header = ''
|
||||
self.write_pre = False
|
||||
self.tab = 1
|
||||
|
@ -56,7 +57,7 @@ class Shader:
|
|||
return (s in self.main or s in self.main_pre or s in self.ins)
|
||||
|
||||
def prepend(self, s):
|
||||
self.main_pre = s + self.main_pre
|
||||
self.main_pre = s + '\n' + self.main_pre
|
||||
|
||||
def write(self, s):
|
||||
if self.write_pre:
|
||||
|
@ -67,6 +68,9 @@ class Shader:
|
|||
def write_header(self, s):
|
||||
self.header += s + '\n'
|
||||
|
||||
def write_main_header(self, s):
|
||||
self.main_header += s + '\n'
|
||||
|
||||
def get(self):
|
||||
s = '#version 450\n'
|
||||
|
||||
|
@ -116,6 +120,7 @@ class Shader:
|
|||
for f in self.functions:
|
||||
s += self.functions[f]
|
||||
s += 'void main() {\n'
|
||||
s += self.main_header
|
||||
s += self.main_pre
|
||||
s += self.main
|
||||
s += '}\n'
|
||||
|
|
|
@ -11,6 +11,7 @@ import arm.assets as assets
|
|||
import arm.log as log
|
||||
import arm.utils
|
||||
import arm.make
|
||||
import arm.make_renderer as make_renderer
|
||||
try:
|
||||
import barmory
|
||||
except ImportError:
|
||||
|
@ -167,33 +168,33 @@ def init_properties():
|
|||
name="Runtime", description="Player runtime used when launching in new window", default='Krom', update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_loadbar = BoolProperty(name="Load Bar", description="Show asset loading progress on published builds", default=True)
|
||||
bpy.types.World.arm_gapi_win = EnumProperty(
|
||||
items = [('opengl2', 'Auto', 'opengl2'),
|
||||
('opengl2', 'OpenGL', 'opengl2'),
|
||||
items = [('opengl', 'Auto', 'opengl'),
|
||||
('opengl', 'OpenGL', 'opengl'),
|
||||
('vulkan', 'Vulkan', 'vulkan'),
|
||||
('direct3d9', 'Direct3D9', 'direct3d9'),
|
||||
('direct3d11', 'Direct3D11', 'direct3d11'),
|
||||
('direct3d12', 'Direct3D12', 'direct3d12')],
|
||||
name="Graphics API", default='opengl2', description='Based on currently selected target', update=update_gapi_win)
|
||||
name="Graphics API", default='opengl', description='Based on currently selected target', update=update_gapi_win)
|
||||
bpy.types.World.arm_gapi_linux = EnumProperty(
|
||||
items = [('opengl2', 'Auto', 'opengl2'),
|
||||
('opengl2', 'OpenGL', 'opengl2'),
|
||||
items = [('opengl', 'Auto', 'opengl'),
|
||||
('opengl', 'OpenGL', 'opengl'),
|
||||
('vulkan', 'Vulkan', 'vulkan')],
|
||||
name="Graphics API", default='opengl2', description='Based on currently selected target', update=update_gapi_linux)
|
||||
name="Graphics API", default='opengl', description='Based on currently selected target', update=update_gapi_linux)
|
||||
bpy.types.World.arm_gapi_android = EnumProperty(
|
||||
items = [('opengl2', 'Auto', 'opengl2'),
|
||||
('opengl2', 'OpenGL', 'opengl2'),
|
||||
items = [('opengl', 'Auto', 'opengl'),
|
||||
('opengl', 'OpenGL', 'opengl'),
|
||||
('vulkan', 'Vulkan', 'vulkan')],
|
||||
name="Graphics API", default='opengl2', description='Based on currently selected target', update=update_gapi_android)
|
||||
name="Graphics API", default='opengl', description='Based on currently selected target', update=update_gapi_android)
|
||||
bpy.types.World.arm_gapi_mac = EnumProperty(
|
||||
items = [('opengl2', 'Auto', 'opengl2'),
|
||||
('opengl2', 'OpenGL', 'opengl2'),
|
||||
items = [('opengl', 'Auto', 'opengl'),
|
||||
('opengl', 'OpenGL', 'opengl'),
|
||||
('metal', 'Metal', 'metal')],
|
||||
name="Graphics API", default='opengl2', description='Based on currently selected target', update=update_gapi_mac)
|
||||
name="Graphics API", default='opengl', description='Based on currently selected target', update=update_gapi_mac)
|
||||
bpy.types.World.arm_gapi_ios = EnumProperty(
|
||||
items = [('opengl2', 'Auto', 'opengl2'),
|
||||
('opengl2', 'OpenGL', 'opengl2'),
|
||||
items = [('opengl', 'Auto', 'opengl'),
|
||||
('opengl', 'OpenGL', 'opengl'),
|
||||
('metal', 'Metal', 'metal')],
|
||||
name="Graphics API", default='opengl2', description='Based on currently selected target', update=update_gapi_ios)
|
||||
name="Graphics API", default='opengl', description='Based on currently selected target', update=update_gapi_ios)
|
||||
bpy.types.World.arm_gapi_html5 = EnumProperty(
|
||||
items = [('webgl', 'Auto', 'webgl'),
|
||||
('webgl', 'WebGL', 'webgl')],
|
||||
|
@ -449,7 +450,7 @@ def init_properties():
|
|||
('Auto', 'Auto', 'Auto')],
|
||||
name="Anisotropic Filtering", description="Texture filtering", default='On')
|
||||
bpy.types.World.force_no_culling = bpy.props.BoolProperty(name="Force No Culling", default=False)
|
||||
bpy.types.World.tessellation_enabled = bpy.props.BoolProperty(name="Tessellation", description="Enable tessellation for height maps on supported targets", default=True)
|
||||
bpy.types.World.tessellation_enabled = bpy.props.BoolProperty(name="Tessellation", description="Enable tessellation for height maps on supported targets", default=True, update=assets.invalidate_shader_cache)
|
||||
# Lighting flags
|
||||
bpy.types.World.diffuse_model = EnumProperty(
|
||||
items=[('Lambert', 'Lambert', 'Lambert'),
|
||||
|
@ -553,6 +554,8 @@ def init_properties_on_load():
|
|||
print('Project updated to sdk v' + arm_version)
|
||||
wrd.arm_version = arm_version
|
||||
arm.make.clean_project()
|
||||
if len(bpy.data.cameras) > 0:
|
||||
make_renderer.make_renderer(bpy.data.cameras[0])
|
||||
|
||||
# Set url for embedded player
|
||||
if arm.utils.with_krom():
|
||||
|
|
|
@ -199,7 +199,7 @@ def check_sdkpath(self):
|
|||
return True
|
||||
|
||||
def tess_enabled(target):
|
||||
return target == 'krom' or target == 'native'
|
||||
return (target == 'krom' or target == 'native') and bpy.data.worlds['Arm'].tessellation_enabled
|
||||
|
||||
def is_object_animation_enabled(bobject):
|
||||
# Checks if animation is present and enabled
|
||||
|
|
Loading…
Reference in a new issue