Simplify shader files

This commit is contained in:
Lubos Lenco 2017-12-20 10:19:44 +01:00
parent 409a398730
commit 0ec80ebeff
14 changed files with 56 additions and 64 deletions

View file

@ -1,7 +1,7 @@
{
"contexts": [
{
"name": "world",
"name": "world_pass",
"depth_write": false,
"compare_mode": "less",
"cull_mode": "clockwise",
@ -101,8 +101,8 @@
}
],
"texture_params": [],
"vertex_shader": "world.vert.glsl",
"fragment_shader": "world.frag.glsl"
"vertex_shader": "world_pass.vert.glsl",
"fragment_shader": "world_pass.frag.glsl"
}
]
}

View file

@ -37,7 +37,7 @@ class RenderPathCreator {
#if (rp_background == "World")
{
path.loadShader("shader_datas/world/world");
path.loadShader("shader_datas/world_pass/world_pass");
}
#end
@ -178,7 +178,7 @@ class RenderPathCreator {
path.drawMeshes("mesh");
#if (rp_background == "World")
{
path.drawSkydome("shader_datas/world/world");
path.drawSkydome("shader_datas/world_pass/world_pass");
}
#end
@ -233,7 +233,7 @@ class RenderPathCreator {
static function init() {
#if (rp_background == "World")
{
path.loadShader("shader_datas/world/world");
path.loadShader("shader_datas/world_pass/world_pass");
}
#end
@ -807,7 +807,7 @@ class RenderPathCreator {
#if (rp_background == "World")
{
path.drawSkydome("shader_datas/world/world");
path.drawSkydome("shader_datas/world_pass/world_pass");
}
#end

View file

@ -85,8 +85,6 @@ def invalidate_shader_cache(self, context):
fp = arm.utils.get_fp_build()
if os.path.isdir(fp + '/compiled/Shaders'):
shutil.rmtree(fp + '/compiled/Shaders', onerror=remove_readonly)
if os.path.isdir(fp + '/compiled/ShaderRaws'):
shutil.rmtree(fp + '/compiled/ShaderRaws', onerror=remove_readonly)
if os.path.isdir(fp + '/debug/html5-resources'):
shutil.rmtree(fp + '/debug/html5-resources', onerror=remove_readonly)
if os.path.isdir(fp + '/krom-resources'):
@ -105,12 +103,8 @@ def invalidate_compiled_data(self, context):
if invalidate_enabled == False:
return
fp = arm.utils.get_fp_build()
if os.path.isdir(fp + '/compiled/Assets'):
shutil.rmtree(fp + '/compiled/Assets', onerror=remove_readonly)
if os.path.isdir(fp + '/compiled/Shaders'):
shutil.rmtree(fp + '/compiled/Shaders', onerror=remove_readonly)
if os.path.isdir(fp + '/compiled/ShaderRaws'):
shutil.rmtree(fp + '/compiled/ShaderRaws', onerror=remove_readonly)
if os.path.isdir(fp + '/compiled'):
shutil.rmtree(fp + '/compiled', onerror=remove_readonly)
def invalidate_mesh_data(self, context):
fp = arm.utils.get_fp_build()

View file

@ -74,8 +74,6 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
shutil.rmtree(build_dir + '/osx-resources', onerror=remove_readonly)
if os.path.isdir(build_dir + '/compiled/Shaders'):
shutil.rmtree(build_dir + '/compiled/Shaders', onerror=remove_readonly)
if os.path.isdir(build_dir + '/compiled/ShaderRaws'):
shutil.rmtree(build_dir + '/compiled/ShaderRaws', onerror=remove_readonly)
# Detect camera plane changes
if len(bpy.data.cameras) > 0:
@ -375,6 +373,7 @@ def watch_play():
def watch_compile(mode):
state.compileproc.wait()
log.print_progress(100)
print('Finished in ' + str(time.time() - profile_time))
if state.compileproc == None: ##
return
result = state.compileproc.poll()
@ -383,7 +382,6 @@ def watch_compile(mode):
if result == 0:
bpy.data.worlds['Arm'].arm_recompile = False
state.compileproc_success = True
print('Finished in ' + str(time.time() - profile_time))
on_compiled(mode)
else:
state.compileproc_success = False

View file

@ -28,7 +28,7 @@ def build():
assets.add_khafile_def('rp_background={0}'.format(rpdat.rp_background))
if rpdat.rp_background == 'World':
assets.add_shader_pass('world')
assets.add_shader_pass('world_pass')
if '_EnvClouds' in wrd.world_defs:
assets.add(assets_path + 'noise256.png')
assets.add_embedded_data('noise256.png')

View file

@ -963,7 +963,7 @@ def parse_normal_map_color_input(inp):
defplus = get_rp_renderer() == 'Deferred Plus'
if not get_arm_export_tangents() or defplus or mat_get_material().arm_decal: # Compute TBN matrix
frag.write('vec3 texn = ({0}) * 2.0 - 1.0;'.format(parse_vector_input(inp)))
frag.add_include('../../Shaders/std/normals.glsl')
frag.add_include('std/normals.glsl')
if defplus:
frag.write('mat3 TBN = cotangentFrame(n, -vVec, g2.xy, g2.zw);')
else:
@ -1022,7 +1022,7 @@ def parse_value(node, socket):
elif node.type == 'CAMERA':
# View Z Depth
if socket == node.outputs[1]:
curshader.add_include('../../Shaders/std/math.glsl')
curshader.add_include('std/math.glsl')
curshader.add_uniform('vec2 cameraProj', link='_cameraPlaneProj')
return 'linearize(gl_FragCoord.z, cameraProj)'
# View Distance

View file

@ -26,8 +26,8 @@ def make(context_id):
vert.write('wvpposition = WVP * vec4(pos, 1.0);')
vert.write('gl_Position = wvpposition;')
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('../../Shaders/std/gbuffer.glsl')
frag.add_include('compiled.glsl')
frag.add_include('std/gbuffer.glsl')
frag.ins = vert.outs
frag.add_uniform('sampler2D gbufferD')
frag.add_uniform('mat4 invVP', '_inverseViewProjectionMatrix')

View file

@ -139,7 +139,7 @@ def make_base(con_mesh, parse_opacity):
if write_vertex_attribs != None:
vattr_written = write_vertex_attribs(vert)
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('compiled.glsl')
written = False
if write_material_attribs != None:
@ -302,7 +302,7 @@ def make_deferred(con_mesh):
frag.add_out('vec4[2] fragColor')
# Pack gbuffer
frag.add_include('../../Shaders/std/gbuffer.glsl')
frag.add_include('std/gbuffer.glsl')
if mat_state.material.arm_two_sided:
frag.add_uniform('vec3 v', link='_cameraLook')
@ -343,7 +343,7 @@ def make_deferred_plus(con_mesh):
vert.add_uniform('mat4 WVP', '_worldViewProjectionMatrix')
vert.write('gl_Position = WVP * spos;')
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('compiled.glsl')
vert.add_out('vec2 texCoord')
@ -360,7 +360,7 @@ def make_deferred_plus(con_mesh):
frag.add_uniform('float materialID', link='_objectInfoMaterialIndex')
# Pack gbuffer
frag.add_include('../../Shaders/std/gbuffer.glsl')
frag.add_include('std/gbuffer.glsl')
frag.write('n /= (abs(n.x) + abs(n.y) + abs(n.z));')
frag.write('n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy);')
frag.write('fragColor[0] = vec4(n.xy, fract(texCoord));')
@ -385,7 +385,7 @@ def make_forward_mobile(con_mesh):
vert.write('wposition = vec4(W * spos).xyz;')
vert.write('gl_Position = WVP * spos;')
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('compiled.glsl')
frag.write('vec3 basecol;')
frag.write('float roughness;')
frag.write('float metallic;')
@ -404,8 +404,8 @@ def make_forward_mobile(con_mesh):
write_norpos(con_mesh, vert)
frag.prepend_header('vec3 n = normalize(wnormal);')
frag.add_include('../../Shaders/std/math.glsl')
frag.add_include('../../Shaders/std/brdf.glsl')
frag.add_include('std/math.glsl')
frag.add_include('std/brdf.glsl')
frag.add_uniform('vec3 lightColor', '_lampColor')
frag.add_uniform('vec3 lightDir', '_lampDirection')
frag.add_uniform('vec3 lightPos', '_lampPosition')
@ -420,7 +420,7 @@ def make_forward_mobile(con_mesh):
vert.add_out('vec4 lampPos')
vert.add_uniform('mat4 LWVP', '_biasLampWorldViewProjectionMatrix')
vert.write('lampPos = LWVP * spos;')
frag.add_include('../../Shaders/std/shadows.glsl')
frag.add_include('std/shadows.glsl')
frag.add_uniform('sampler2D shadowMap', included=True)
frag.add_uniform('float shadowsBias', '_lampShadowsBias')
frag.write(' if (lampPos.w > 0.0) {')
@ -450,7 +450,7 @@ def make_forward_mobile(con_mesh):
frag.write('direct *= attenuate(distance(wposition, lightPos));')
if '_Irr' in wrd.world_defs:
frag.add_include('../../Shaders/std/shirr.glsl')
frag.add_include('std/shirr.glsl')
frag.add_uniform('vec4 shirr[7]', link='_envmapIrradiance', included=True)
env_str = 'shIrradiance(n)'
else:
@ -473,7 +473,7 @@ def make_forward_solid(con_mesh):
vert.add_uniform('mat4 WVP', '_worldViewProjectionMatrix')
vert.write('gl_Position = WVP * spos;')
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('compiled.glsl')
frag.write('vec3 basecol;')
frag.write('float roughness;')
frag.write('float metallic;')
@ -509,7 +509,7 @@ def make_forward(con_mesh):
# frag.write('fragColor = vec4(indirect, 1.0);') # AO view
if '_LDR' in wrd.world_defs:
frag.add_include('../../Shaders/std/tonemap.glsl')
frag.add_include('std/tonemap.glsl')
frag.write('fragColor.rgb = tonemapFilmic(fragColor.rgb);')
# frag.write('fragColor.rgb = pow(fragColor.rgb, vec3(1.0 / 2.2));')
@ -548,8 +548,8 @@ def make_forward_base(con_mesh, parse_opacity=False):
vert.add_uniform('vec3 eye', '_cameraPosition')
vert.write('eyeDir = eye - wposition;')
frag.add_include('../../Shaders/std/brdf.glsl')
frag.add_include('../../Shaders/std/math.glsl')
frag.add_include('std/brdf.glsl')
frag.add_include('std/math.glsl')
frag.add_uniform('vec3 lightColor', '_lampColor')
frag.add_uniform('vec3 lightDir', '_lampDirection')
frag.add_uniform('vec3 lightPos', '_lampPosition')
@ -558,7 +558,7 @@ def make_forward_base(con_mesh, parse_opacity=False):
frag.add_uniform('float envmapStrength', link='_envmapStrength')
if '_Irr' in wrd.world_defs:
frag.add_include('../../Shaders/std/shirr.glsl')
frag.add_include('std/shirr.glsl')
frag.add_uniform('vec4 shirr[7]', link='_envmapIrradiance', included=True)
if '_Rad' in wrd.world_defs:
frag.add_uniform('sampler2D senvmapRadiance', link='_envmapRadiance')
@ -589,7 +589,7 @@ def make_forward_base(con_mesh, parse_opacity=False):
vert.add_uniform('mat4 LWVP', '_biasLampWorldViewProjectionMatrix')
vert.write('if (lightShadow == 1) lampPos = LWVP * spos;')
frag.add_include('../../Shaders/std/shadows.glsl')
frag.add_include('std/shadows.glsl')
frag.add_uniform('sampler2D shadowMap', included=True)
frag.add_uniform('samplerCube shadowMapCube', included=True)
frag.add_uniform('bool receiveShadow')
@ -600,7 +600,7 @@ def make_forward_base(con_mesh, parse_opacity=False):
frag.write('if (receiveShadow) {')
frag.write(' if (lightShadow == 1) {')
if '_CSM' in wrd.world_defs:
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('compiled.glsl')
frag.add_uniform('vec4 casData[shadowmapCascades * 4 + 4]', '_cascadeData', included=True)
frag.add_uniform('vec3 eye', '_cameraPosition')
frag.write('vec2 smSize;')
@ -646,7 +646,7 @@ def make_forward_base(con_mesh, parse_opacity=False):
frag.write('vec3 direct;')
if '_LTC' in wrd.world_defs:
frag.add_include('../../Shaders/std/ltc.glsl')
frag.add_include('std/ltc.glsl')
frag.add_uniform('sampler2D sltcMat', link='_ltcMat')
frag.add_uniform('sampler2D sltcMag', link='_ltcMag')
frag.add_uniform('vec3 lampArea0', link='_lampArea0')
@ -692,7 +692,7 @@ def make_forward_base(con_mesh, parse_opacity=False):
frag.write('vec3 indirect = albedo;')
if '_VoxelGI' in wrd.world_defs or '_VoxelAO' in wrd.world_defs:
frag.add_include('../../Shaders/std/conetrace.glsl')
frag.add_include('std/conetrace.glsl')
frag.add_uniform('sampler3D voxels', included=True)
if '_VoxelGICam' in wrd.world_defs:
frag.add_uniform('vec3 eyeSnap', link='_cameraPositionSnap')

View file

@ -41,12 +41,12 @@ def make_rect(con_rect):
frag.ins = vert.outs
frag.add_out('vec4 fragColor')
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('../../Shaders/std/brdf.glsl')
frag.add_include('../../Shaders/std/math.glsl')
frag.add_include('../../Shaders/std/gbuffer.glsl')
frag.add_include('../../Shaders/std/shirr.glsl')
frag.add_include('../../Shaders/std/shadows.glsl')
frag.add_include('compiled.glsl')
frag.add_include('std/brdf.glsl')
frag.add_include('std/math.glsl')
frag.add_include('std/gbuffer.glsl')
frag.add_include('std/shirr.glsl')
frag.add_include('std/shadows.glsl')
frag.add_uniform('sampler2D gbuffer0')
frag.add_uniform('sampler2D gbuffer1')

View file

@ -30,7 +30,7 @@ def build(material, mat_users, mat_armusers):
wrd = bpy.data.worlds['Arm']
rpasses = mat_utils.get_rpasses(material)
matname = arm.utils.safesrc(arm.utils.asset_name(material))
rel_path = arm.utils.build_dir() + '/compiled/ShaderRaws/' + matname
rel_path = arm.utils.build_dir() + '/compiled/Shaders/'
full_path = arm.utils.get_fp() + '/' + rel_path
if not os.path.exists(full_path):
os.makedirs(full_path)
@ -91,7 +91,7 @@ def build(material, mat_users, mat_armusers):
arm.utils.write_arm(full_path + '/' + matname + '_data.arm', mat_state.data.get())
shader_data_name = matname + '_data'
shader_data_path = arm.utils.build_dir() + '/compiled/ShaderRaws/' + matname + '/' + shader_data_name + '.arm'
shader_data_path = arm.utils.build_dir() + '/compiled/Shaders/' + shader_data_name + '.arm'
assets.add_shader_data(shader_data_path)
return rpasses, mat_state.data, shader_data_name, bind_constants, bind_textures

View file

@ -2,16 +2,16 @@ import bpy
def skin_pos(vert):
vert.add_include('../../Shaders/compiled.glsl')
vert.add_include('compiled.glsl')
if bpy.data.worlds['Arm'].arm_skin == 'GPU (Matrix)':
vert.add_include('../../Shaders/std/skinning_mat.glsl')
vert.add_include('std/skinning_mat.glsl')
vert.add_uniform('vec4 skinBones[skinMaxBones * 3]', link='_skinBones', included=True)
vert.write('mat4 skinningMat = getSkinningMat(ivec4(bone), weight);')
vert.write('spos *= skinningMat;')
else: # Dual Quat
vert.add_include('../../Shaders/std/skinning.glsl')
vert.add_include('std/skinning.glsl')
vert.add_uniform('vec4 skinBones[skinMaxBones * 2]', link='_skinBones', included=True)
vert.write('vec4 skinA;')
vert.write('vec4 skinB;')

View file

@ -27,9 +27,9 @@ def make_gi(context_id):
geom.ins = vert.outs
frag.ins = geom.outs
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('../../Shaders/std/math.glsl')
frag.add_include('../../Shaders/std/imageatomic.glsl')
frag.add_include('compiled.glsl')
frag.add_include('std/math.glsl')
frag.add_include('std/imageatomic.glsl')
frag.write_header('#extension GL_ARB_shader_image_load_store : enable')
rpdat = arm.utils.get_rp()
@ -60,7 +60,7 @@ def make_gi(context_id):
frag.write('if (dotNL == 0.0) return;')
if is_shadows:
frag.add_include('../../Shaders/std/shadows.glsl')
frag.add_include('std/shadows.glsl')
frag.add_uniform('sampler2D shadowMap', included=True)
frag.add_uniform('samplerCube shadowMapCube', included=True)
frag.add_uniform('int lightShadow', '_lampCastShadow')
@ -83,7 +83,7 @@ def make_gi(context_id):
# frag.write('}')
# if '_LTC' in wrd.world_defs:
# frag.add_include('../../Shaders/std/ltc.glsl')
# frag.add_include('std/ltc.glsl')
# frag.add_uniform('sampler2D sltcMat', link='_ltcMat')
# frag.add_uniform('sampler2D sltcMag', link='_ltcMag')
# frag.add_uniform('vec3 lampArea0', link='_lampArea0')
@ -146,7 +146,7 @@ def make_gi(context_id):
vert.add_out('vec3 voxpositionGeom')
vert.add_out('vec3 wnormalGeom')
vert.add_include('../../Shaders/compiled.glsl')
vert.add_include('compiled.glsl')
if con_voxel.is_elem('col'):
vert.add_out('vec3 vcolorGeom')
@ -167,8 +167,8 @@ def make_gi(context_id):
if is_shadows:
vert.add_out('vec4 lampPosGeom')
if '_CSM' in wrd.world_defs:
vert.add_include('../../Shaders/compiled.glsl')
vert.add_include('../../Shaders/std/shadows.glsl')
vert.add_include('compiled.glsl')
vert.add_include('std/shadows.glsl')
vert.add_uniform('vec4 casData[shadowmapCascades * 4 + 4]', '_cascadeData', included=True)
# TODO: Using second cascade
vert.write('mat4 LWVP = mat4(casData[4 + 0], casData[4 + 1], casData[4 + 2], casData[4 + 3]);')
@ -284,16 +284,16 @@ def make_ao(context_id):
geom.ins = vert.outs
frag.ins = geom.outs
frag.add_include('../../Shaders/compiled.glsl')
frag.add_include('../../Shaders/std/math.glsl')
frag.add_include('../../Shaders/std/imageatomic.glsl')
frag.add_include('compiled.glsl')
frag.add_include('std/math.glsl')
frag.add_include('std/imageatomic.glsl')
frag.write_header('#extension GL_ARB_shader_image_load_store : enable')
rpdat = arm.utils.get_rp()
# frag.add_uniform('layout(r32ui) uimage3D voxels')
frag.add_uniform('layout(r8) image3D voxels')
vert.add_include('../../Shaders/compiled.glsl')
vert.add_include('compiled.glsl')
vert.add_uniform('mat4 W', '_worldMatrix')
vert.add_out('vec3 voxpositionGeom')