diff --git a/Assets/hosek/hosek_radiance.hdr b/Assets/hosek/hosek_radiance.hdr index f6a44407..c081a98f 100644 Binary files a/Assets/hosek/hosek_radiance.hdr and b/Assets/hosek/hosek_radiance.hdr differ diff --git a/Assets/hosek/hosek_radiance_0.hdr b/Assets/hosek/hosek_radiance_0.hdr index a9f3cb23..3e65bd65 100644 Binary files a/Assets/hosek/hosek_radiance_0.hdr and b/Assets/hosek/hosek_radiance_0.hdr differ diff --git a/Assets/hosek/hosek_radiance_1.hdr b/Assets/hosek/hosek_radiance_1.hdr index 44e1b7cb..0444184b 100644 Binary files a/Assets/hosek/hosek_radiance_1.hdr and b/Assets/hosek/hosek_radiance_1.hdr differ diff --git a/Assets/hosek/hosek_radiance_2.hdr b/Assets/hosek/hosek_radiance_2.hdr index 5c5b2a0d..44a1db4f 100644 Binary files a/Assets/hosek/hosek_radiance_2.hdr and b/Assets/hosek/hosek_radiance_2.hdr differ diff --git a/Assets/hosek/hosek_radiance_3.hdr b/Assets/hosek/hosek_radiance_3.hdr index d57d6a32..15342d31 100644 Binary files a/Assets/hosek/hosek_radiance_3.hdr and b/Assets/hosek/hosek_radiance_3.hdr differ diff --git a/Assets/hosek/hosek_radiance_4.hdr b/Assets/hosek/hosek_radiance_4.hdr index 2be14f17..dfe501bc 100644 Binary files a/Assets/hosek/hosek_radiance_4.hdr and b/Assets/hosek/hosek_radiance_4.hdr differ diff --git a/Assets/hosek/hosek_radiance_5.hdr b/Assets/hosek/hosek_radiance_5.hdr index 76d5ee0d..5f4d7289 100644 Binary files a/Assets/hosek/hosek_radiance_5.hdr and b/Assets/hosek/hosek_radiance_5.hdr differ diff --git a/Assets/hosek/hosek_radiance_6.hdr b/Assets/hosek/hosek_radiance_6.hdr index 08794116..4b89193c 100644 Binary files a/Assets/hosek/hosek_radiance_6.hdr and b/Assets/hosek/hosek_radiance_6.hdr differ diff --git a/Assets/hosek/hosek_radiance_7.hdr b/Assets/hosek/hosek_radiance_7.hdr index 3208cd77..305e2267 100644 Binary files a/Assets/hosek/hosek_radiance_7.hdr and b/Assets/hosek/hosek_radiance_7.hdr differ diff --git a/Assets/hosek_original/hosek_radiance.hdr b/Assets/hosek_original/hosek_radiance.hdr new file mode 100644 index 00000000..f6a44407 Binary files /dev/null and b/Assets/hosek_original/hosek_radiance.hdr differ diff --git a/Assets/hosek_original/hosek_radiance_0.hdr b/Assets/hosek_original/hosek_radiance_0.hdr new file mode 100644 index 00000000..a9f3cb23 Binary files /dev/null and b/Assets/hosek_original/hosek_radiance_0.hdr differ diff --git a/Assets/hosek_original/hosek_radiance_1.hdr b/Assets/hosek_original/hosek_radiance_1.hdr new file mode 100644 index 00000000..44e1b7cb Binary files /dev/null and b/Assets/hosek_original/hosek_radiance_1.hdr differ diff --git a/Assets/hosek_original/hosek_radiance_2.hdr b/Assets/hosek_original/hosek_radiance_2.hdr new file mode 100644 index 00000000..5c5b2a0d Binary files /dev/null and b/Assets/hosek_original/hosek_radiance_2.hdr differ diff --git a/Assets/hosek_original/hosek_radiance_3.hdr b/Assets/hosek_original/hosek_radiance_3.hdr new file mode 100644 index 00000000..d57d6a32 Binary files /dev/null and b/Assets/hosek_original/hosek_radiance_3.hdr differ diff --git a/Assets/hosek_original/hosek_radiance_4.hdr b/Assets/hosek_original/hosek_radiance_4.hdr new file mode 100644 index 00000000..2be14f17 Binary files /dev/null and b/Assets/hosek_original/hosek_radiance_4.hdr differ diff --git a/Assets/hosek_original/hosek_radiance_5.hdr b/Assets/hosek_original/hosek_radiance_5.hdr new file mode 100644 index 00000000..76d5ee0d Binary files /dev/null and b/Assets/hosek_original/hosek_radiance_5.hdr differ diff --git a/Assets/hosek_original/hosek_radiance_6.hdr b/Assets/hosek_original/hosek_radiance_6.hdr new file mode 100644 index 00000000..08794116 Binary files /dev/null and b/Assets/hosek_original/hosek_radiance_6.hdr differ diff --git a/Assets/hosek_original/hosek_radiance_7.hdr b/Assets/hosek_original/hosek_radiance_7.hdr new file mode 100644 index 00000000..3208cd77 Binary files /dev/null and b/Assets/hosek_original/hosek_radiance_7.hdr differ diff --git a/Sources/armory/renderpath/HosekWilkie.hx b/Sources/armory/renderpath/HosekWilkie.hx index 88d8c0c9..b6ac6cb1 100644 --- a/Sources/armory/renderpath/HosekWilkie.hx +++ b/Sources/armory/renderpath/HosekWilkie.hx @@ -103,7 +103,7 @@ class HosekWilkieRadianceData { Z.x /= dotS; Z.y /= dotS; Z.z /= dotS; - Z.mult(normalizedSunY); + Z = Z.mult(normalizedSunY); } // Store in a single float array for shader access diff --git a/Sources/armory/trait/ArcBall.hx b/Sources/armory/trait/ArcBall.hx index 35a021da..1246f575 100644 --- a/Sources/armory/trait/ArcBall.hx +++ b/Sources/armory/trait/ArcBall.hx @@ -6,6 +6,7 @@ import iron.system.Input; import iron.math.Vec4; import iron.math.Quat; +@:keep class ArcBall extends Trait { public function new() { diff --git a/Sources/armory/trait/FirstPersonController.hx b/Sources/armory/trait/FirstPersonController.hx index 72056403..76a6a7ab 100644 --- a/Sources/armory/trait/FirstPersonController.hx +++ b/Sources/armory/trait/FirstPersonController.hx @@ -6,6 +6,7 @@ import iron.object.Object; import armory.trait.internal.PhysicsWorld; import armory.trait.internal.CameraController; +@:keep class FirstPersonController extends CameraController { #if (!WITH_PHYSICS) diff --git a/Sources/armory/trait/GunController.hx b/Sources/armory/trait/GunController.hx index 59412a62..ce017612 100644 --- a/Sources/armory/trait/GunController.hx +++ b/Sources/armory/trait/GunController.hx @@ -11,6 +11,7 @@ import iron.object.CameraObject; import armory.trait.internal.RigidBody; import armory.system.Keymap; +@:keep class GunController extends Trait { #if (!WITH_PHYSICS) diff --git a/Sources/armory/trait/MirrorTexture.hx b/Sources/armory/trait/MirrorTexture.hx index c8be146a..4759b699 100644 --- a/Sources/armory/trait/MirrorTexture.hx +++ b/Sources/armory/trait/MirrorTexture.hx @@ -3,6 +3,7 @@ package armory.trait; import iron.Trait; import iron.object.MeshObject; +@:keep class MirrorTexture extends Trait { var cameraName:String; diff --git a/Sources/armory/trait/NavAgent.hx b/Sources/armory/trait/NavAgent.hx index d0f97477..338e6c95 100644 --- a/Sources/armory/trait/NavAgent.hx +++ b/Sources/armory/trait/NavAgent.hx @@ -2,6 +2,7 @@ package armory.trait; import iron.Trait; +@:keep class NavAgent extends Trait { // nav mesh diff --git a/Sources/armory/trait/NavCrowd.hx b/Sources/armory/trait/NavCrowd.hx index 0c0a0055..3330212f 100644 --- a/Sources/armory/trait/NavCrowd.hx +++ b/Sources/armory/trait/NavCrowd.hx @@ -2,6 +2,7 @@ package armory.trait; import iron.Trait; +@:keep class NavCrowd extends Trait { public function new() { diff --git a/Sources/armory/trait/NavMesh.hx b/Sources/armory/trait/NavMesh.hx index 2caa4e8d..63e493df 100644 --- a/Sources/armory/trait/NavMesh.hx +++ b/Sources/armory/trait/NavMesh.hx @@ -2,6 +2,7 @@ package armory.trait; import iron.Trait; +@:keep class NavMesh extends Trait { public function new() { diff --git a/Sources/armory/trait/PhysicsDrag.hx b/Sources/armory/trait/PhysicsDrag.hx index eb0626c1..999ad188 100644 --- a/Sources/armory/trait/PhysicsDrag.hx +++ b/Sources/armory/trait/PhysicsDrag.hx @@ -8,6 +8,7 @@ import armory.trait.internal.PhysicsWorld; import haxebullet.Bullet; #end +@:keep class PhysicsDrag extends Trait { #if (!WITH_PHYSICS) diff --git a/Sources/armory/trait/SceneInstance.hx b/Sources/armory/trait/SceneInstance.hx index 1f8e2948..b6ecf16b 100644 --- a/Sources/armory/trait/SceneInstance.hx +++ b/Sources/armory/trait/SceneInstance.hx @@ -2,6 +2,7 @@ package armory.trait; import iron.Trait; +@:keep class SceneInstance extends Trait { function safeFilename(s:String) { diff --git a/Sources/armory/trait/SidescrollerController.hx b/Sources/armory/trait/SidescrollerController.hx index 0761cea3..9f81df81 100644 --- a/Sources/armory/trait/SidescrollerController.hx +++ b/Sources/armory/trait/SidescrollerController.hx @@ -3,6 +3,7 @@ package armory.trait; import iron.math.Vec4; import armory.trait.internal.CameraController; +@:keep class SidescrollerController extends CameraController { #if (!WITH_PHYSICS) diff --git a/Sources/armory/trait/ThirdPersonController.hx b/Sources/armory/trait/ThirdPersonController.hx index 0a23a4b1..3c3b7a97 100644 --- a/Sources/armory/trait/ThirdPersonController.hx +++ b/Sources/armory/trait/ThirdPersonController.hx @@ -5,6 +5,7 @@ import iron.system.Input; import armory.trait.internal.PhysicsWorld; import armory.trait.internal.CameraController; +@:keep class ThirdPersonController extends CameraController { #if (!WITH_PHYSICS) diff --git a/Sources/armory/trait/VehicleBody.hx b/Sources/armory/trait/VehicleBody.hx index 90a5c2a5..663ec563 100644 --- a/Sources/armory/trait/VehicleBody.hx +++ b/Sources/armory/trait/VehicleBody.hx @@ -11,6 +11,7 @@ import armory.system.Keymap; import haxebullet.Bullet; #end +@:keep class VehicleBody extends Trait { #if (!WITH_PHYSICS) diff --git a/Sources/armory/trait/WalkNavigation.hx b/Sources/armory/trait/WalkNavigation.hx index 9b079bd1..6114ce16 100644 --- a/Sources/armory/trait/WalkNavigation.hx +++ b/Sources/armory/trait/WalkNavigation.hx @@ -9,6 +9,7 @@ import iron.math.Vec4; import iron.math.Quat; import armory.system.Keymap; +@:keep class WalkNavigation extends Trait { static inline var speed = 5.0; @@ -52,11 +53,11 @@ class WalkNavigation extends Trait { } if (strafeUp) { var dir = new Vec4(0, 0, 1); - camera.move(dir, -d); + camera.move(dir, d); } else if (strafeDown) { var dir = new Vec4(0, 0, 1); - camera.move(dir, d); + camera.move(dir, -d); } if (Input.touch) { diff --git a/Sources/armory/trait/internal/Animation.hx b/Sources/armory/trait/internal/Animation.hx deleted file mode 100644 index 00b77181..00000000 --- a/Sources/armory/trait/internal/Animation.hx +++ /dev/null @@ -1,47 +0,0 @@ -package armory.trait.internal; - -import iron.Trait; - -class Animation extends Trait { - - var startTrack:String; - var names:Array; - var starts:Array; - var ends:Array; - var speeds:Array; - var loops:Array; - var reflects:Array; - static var maxBones:Int; - - public function new(startTrack:String, names:Array, starts:Array, ends:Array, speeds:Array, loops:Array, reflects:Array, _maxBones:Int) { - super(); - - this.startTrack = startTrack; - this.names = names; - this.starts = starts; - this.ends = ends; - this.speeds = speeds; - this.loops = loops; - this.reflects = reflects; - maxBones = _maxBones; - - notifyOnAdd(add); - notifyOnUpdate(update); - } - - function add() { - object.setupAnimation(startTrack, names, starts, ends, speeds, loops, reflects, maxBones); - } - - function update() { - object.setAnimationParams(iron.system.Time.delta); - } - - public function play(trackName:String, onTrackComplete:Void->Void = null) { - object.animation.player.play(trackName, onTrackComplete); - } - - public function pause() { - object.animation.player.pause(); - } -} diff --git a/Sources/armory/trait/internal/CameraController.hx b/Sources/armory/trait/internal/CameraController.hx index 972e7361..0f1edeca 100644 --- a/Sources/armory/trait/internal/CameraController.hx +++ b/Sources/armory/trait/internal/CameraController.hx @@ -6,6 +6,7 @@ import iron.object.Transform; import iron.object.CameraObject; import armory.system.Keymap; +@:keep class CameraController extends Trait { #if (!WITH_PHYSICS) diff --git a/Sources/armory/trait/internal/Console.hx b/Sources/armory/trait/internal/Console.hx index 8be6400b..ee22bc44 100644 --- a/Sources/armory/trait/internal/Console.hx +++ b/Sources/armory/trait/internal/Console.hx @@ -9,6 +9,7 @@ import zui.Zui; import zui.Id; #end +@:keep class Console extends Trait { #if (!WITH_PROFILE) diff --git a/Sources/armory/trait/internal/EditorSpace.hx b/Sources/armory/trait/internal/EditorSpace.hx index a2e528c2..411aa0df 100644 --- a/Sources/armory/trait/internal/EditorSpace.hx +++ b/Sources/armory/trait/internal/EditorSpace.hx @@ -6,6 +6,7 @@ import iron.object.Transform; import iron.system.Input; import iron.math.RayCaster; +@:keep class EditorSpace extends Trait { var gizmo:Object; diff --git a/Sources/armory/trait/internal/JSScript.hx b/Sources/armory/trait/internal/JSScript.hx index 9e6166c4..02df1526 100644 --- a/Sources/armory/trait/internal/JSScript.hx +++ b/Sources/armory/trait/internal/JSScript.hx @@ -2,6 +2,7 @@ package armory.trait.internal; import iron.Trait; +@:keep class JSScript extends Trait { static var api:JSScriptAPI = null; diff --git a/Sources/armory/trait/internal/JSScriptAPI.hx b/Sources/armory/trait/internal/JSScriptAPI.hx index b5d09d14..0047a13d 100644 --- a/Sources/armory/trait/internal/JSScriptAPI.hx +++ b/Sources/armory/trait/internal/JSScriptAPI.hx @@ -8,6 +8,7 @@ package armory.trait.internal; // #include // ') +@:keep class JSScriptAPI { /* static var ctx:haxeduktape.DukContext; diff --git a/Sources/armory/trait/internal/MovieTexture.hx b/Sources/armory/trait/internal/MovieTexture.hx index 30f54f24..d399c569 100644 --- a/Sources/armory/trait/internal/MovieTexture.hx +++ b/Sources/armory/trait/internal/MovieTexture.hx @@ -5,6 +5,7 @@ import kha.Video; import iron.Trait; import iron.object.MeshObject; +@:keep class MovieTexture extends Trait { var video:Video; diff --git a/Sources/armory/trait/internal/NodeExecutor.hx b/Sources/armory/trait/internal/NodeExecutor.hx index 9ab583a6..b5b1ec08 100644 --- a/Sources/armory/trait/internal/NodeExecutor.hx +++ b/Sources/armory/trait/internal/NodeExecutor.hx @@ -2,6 +2,7 @@ package armory.trait.internal; import iron.Trait; +@:keep class NodeExecutor extends Trait { var baseNode:armory.logicnode.Node; diff --git a/Sources/armory/trait/internal/PathTracer.hx b/Sources/armory/trait/internal/PathTracer.hx index 44ad5369..332887d8 100644 --- a/Sources/armory/trait/internal/PathTracer.hx +++ b/Sources/armory/trait/internal/PathTracer.hx @@ -9,6 +9,7 @@ import iron.data.Data; import iron.data.MaterialData; import iron.data.MaterialData.MaterialContext; +@:keep class PathTracer extends Trait { var context:MaterialContext; diff --git a/Sources/armory/trait/internal/PhysicsWorld.hx b/Sources/armory/trait/internal/PhysicsWorld.hx index 754089b0..f41eab0e 100644 --- a/Sources/armory/trait/internal/PhysicsWorld.hx +++ b/Sources/armory/trait/internal/PhysicsWorld.hx @@ -17,6 +17,7 @@ class ContactPair { } } +@:keep class PhysicsWorld extends Trait { #if (!WITH_PHYSICS) diff --git a/Sources/armory/trait/internal/RigidBody.hx b/Sources/armory/trait/internal/RigidBody.hx index 41c64962..22b110c8 100644 --- a/Sources/armory/trait/internal/RigidBody.hx +++ b/Sources/armory/trait/internal/RigidBody.hx @@ -9,6 +9,7 @@ import iron.math.Vec4; import iron.object.Transform; import iron.object.MeshObject; +@:keep class RigidBody extends Trait { #if (!WITH_PHYSICS) diff --git a/blender/data/data.blend b/blender/data/data.blend index 6be611b8..549946b5 100644 Binary files a/blender/data/data.blend and b/blender/data/data.blend differ diff --git a/blender/exporter.py b/blender/exporter.py index ab7d7516..5bbd04b5 100644 --- a/blender/exporter.py +++ b/blender/exporter.py @@ -2596,6 +2596,43 @@ class ArmoryExporter(bpy.types.Operator, ExportHelper): break def cb_export_object(self, bobject, o, type): + # Animation setup + if self.is_bone_animation_enabled(bobject) or self.is_object_animation_enabled(bobject): + x = {} + if len(bobject.my_cliptraitlist) > 0: + # Edit clips enabled + x['names'] = [] + x['starts'] = [] + x['ends'] = [] + x['speeds'] = [] + x['loops'] = [] + x['reflects'] = [] + for at in bobject.my_cliptraitlist: + if at.enabled_prop: + x['names'].append(at.name) + x['starts'].append(at.start_prop) + x['ends'].append(at.end_prop) + x['speeds'].append(at.speed_prop) + x['loops'].append(at.loop_prop) + x['reflects'].append(at.reflect_prop) + x['start_track'] = bobject.start_track_name_prop + x['max_bones'] = bpy.data.worlds['Arm'].generate_gpu_skin_max_bones + else: + # Export default clip, taking full action + if self.is_bone_animation_enabled(bobject): + begin_frame, end_frame = self.get_action_framerange(bobject.parent.animation_data.action) + else: + begin_frame, end_frame = self.get_action_framerange(bobject.animation_data.action) + x['start_track'] = 'default' + x['names'] = ['default'] + x['starts'] = [begin_frame] + x['ends'] = [end_frame] + x['speeds'] = [1.0] + x['loops'] = [True] + x['reflects'] = [False] + x['max_bones'] = bpy.data.worlds['Arm'].generate_gpu_skin_max_bones + o['animation_setup'] = x + # Export traits o['traits'] = [] for t in bobject.my_traitlist: @@ -2606,17 +2643,18 @@ class ArmoryExporter(bpy.types.Operator, ExportHelper): x['type'] = 'Script' x['class_name'] = bpy.data.worlds['Arm'].ArmProjectPackage + '.node.' + utils.safe_filename(t.nodes_name_prop) elif t.type_prop == 'JS Script' or t.type_prop == 'Python Script': + basename = t.jsscript_prop.split('.')[0] x['type'] = 'Script' x['class_name'] = 'armory.trait.internal.JSScript' - x['parameters'] = [utils.safe_filename(t.jsscript_prop)] + x['parameters'] = [utils.safe_filename(basename)] scriptspath = utils.get_fp() + '/build/compiled/scripts/' if not os.path.exists(scriptspath): os.makedirs(scriptspath) # Compile to JS if t.type_prop == 'Python Script': # Write py to file - pyname = t.jsscript_prop + '.py' - targetpath = scriptspath + pyname + basename_ext = basename + '.py' + targetpath = scriptspath + basename_ext with open(targetpath, 'w') as f: f.write(bpy.data.texts[t.jsscript_prop].as_string()) sdk_path = utils.get_sdk_path() @@ -2631,10 +2669,10 @@ class ArmoryExporter(bpy.types.Operator, ExportHelper): cwd = os.getcwd() os.chdir(scriptspath) # Disable minification for now, too slow - transproc = subprocess.Popen([python_path + ' ' + sdk_path + '/lib/transcrypt/__main__.py' + ' ' + pyname + ' --nomin'], shell=True) + transproc = subprocess.Popen([python_path + ' ' + sdk_path + '/lib/transcrypt/__main__.py' + ' ' + basename_ext + ' --nomin'], shell=True) transproc.wait() if transproc.poll() != 0: - make.armory_log('Compiling ' + pyname + ' failed, check console') + make.armory_log('Compiling ' + t.jsscript_prop + ' failed, check console') os.chdir(cwd) # Compiled file assets.add('build/compiled/scripts/__javascript__/' + t.jsscript_prop + '.js') @@ -2660,37 +2698,6 @@ class ArmoryExporter(bpy.types.Operator, ExportHelper): x['parameters'].append(ast.literal_eval(pt.name)) o['traits'].append(x) - # Animation trait - if self.is_bone_animation_enabled(bobject) or self.is_object_animation_enabled(bobject): - x = {} - x['type'] = 'Script' - x['class_name'] = 'armory.trait.internal.Animation' - if len(bobject.my_cliptraitlist) > 0: - # Edit clips enabled - names = [] - starts = [] - ends = [] - speeds = [] - loops = [] - reflects = [] - for at in bobject.my_cliptraitlist: - if at.enabled_prop: - names.append(at.name) - starts.append(at.start_prop) - ends.append(at.end_prop) - speeds.append(at.speed_prop) - loops.append(at.loop_prop) - reflects.append(at.reflect_prop) - x['parameters'] = [bobject.start_track_name_prop, names, starts, ends, speeds, loops, reflects, bpy.data.worlds['Arm'].generate_gpu_skin_max_bones] - else: - # Export default clip, taking full action - if self.is_bone_animation_enabled(bobject): - begin_frame, end_frame = self.get_action_framerange(bobject.parent.animation_data.action) - else: - begin_frame, end_frame = self.get_action_framerange(bobject.animation_data.action) - x['parameters'] = ['default', ['default'], [begin_frame], [end_frame], [1.0], [True], [False], bpy.data.worlds['Arm'].generate_gpu_skin_max_bones] - o['traits'].append(x) - # Rigid body trait if bobject.rigid_body != None: ArmoryExporter.export_physics = True diff --git a/blender/lib/make_datas.py b/blender/lib/make_datas.py index 4399aa11..37544a93 100644 --- a/blender/lib/make_datas.py +++ b/blender/lib/make_datas.py @@ -200,15 +200,31 @@ def parse_shader(sres, c, con, defs, lines, parse_attributes): for l in c['links']: if l['name'] == cid: valid_link = True + if 'ifdef' in l: - valid_link = False + def_found = False for d in defs: for link_def in l['ifdef']: if d == link_def: - valid_link = True + def_found = True break - if valid_link: + if def_found: break + if not def_found: + valid_link = False + + if 'ifndef' in l: + def_found = False + for d in defs: + for link_def in l['ifdef']: + if d == link_def: + def_found = True + break + if def_found: + break + if def_found: + valid_link = False + if valid_link: tu['link'] = l['link'] break @@ -229,15 +245,31 @@ def parse_shader(sres, c, con, defs, lines, parse_attributes): for l in c['links']: if l['name'] == cid: valid_link = True + if 'ifdef' in l: - valid_link = False + def_found = False for d in defs: - for lifdef in l['ifdef']: - if d == lifdef: - valid_link = True + for link_def in l['ifdef']: + if d == link_def: + def_found = True break - if valid_link: + if def_found: break + if not def_found: + valid_link = False + + if 'ifndef' in l: + def_found = False + for d in defs: + for link_def in l['ifdef']: + if d == link_def: + def_found = True + break + if def_found: + break + if def_found: + valid_link = False + if valid_link: const['link'] = l['link'] break diff --git a/blender/make.py b/blender/make.py index 6f21f41a..fce26466 100755 --- a/blender/make.py +++ b/blender/make.py @@ -19,6 +19,7 @@ import lib.make_datas import lib.make_variants import utils import assets +import props # Server import http.server import socketserver @@ -84,7 +85,7 @@ def def_strings_to_array(strdefs): defs = ['_' + d for d in defs] # Restore _ return defs -def export_data(fp, sdk_path, is_play=False, is_publish=False): +def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False): raw_path = sdk_path + 'armory/raw/' assets_path = sdk_path + 'armory/Assets/' export_physics = bpy.data.worlds['Arm'].ArmPhysics != 'Disabled' @@ -154,7 +155,7 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False): write_data.write_khafilejs(is_play, export_physics, dce_full=is_publish) # Write Main.hx - write_data.write_main(is_play, play_project.in_viewport) + write_data.write_main(is_play, in_viewport) # Copy ammo.js if necessary #if target_name == 'html5': @@ -193,10 +194,11 @@ def get_kha_target(target_name): # TODO: remove def compile_project(target_name=None, is_publish=False, watch=False): sdk_path = utils.get_sdk_path() ffmpeg_path = utils.get_ffmpeg_path() + wrd = bpy.data.worlds['Arm'] # Set build command if target_name == None: - target_name = bpy.data.worlds['Arm'].ArmProjectTarget + target_name = wrd.ArmProjectTarget if utils.get_os() == 'win': node_path = sdk_path + '/nodejs/node.exe' @@ -219,6 +221,12 @@ def compile_project(target_name=None, is_publish=False, watch=False): cmd.append('-g') cmd.append('opengl2') + # User defined commands + cmd_text = wrd.ArmCommandLine + if cmd_text != '': + for s in bpy.data.texts[cmd_text].as_string().split(' '): + cmd.append(s) + # armory_log("Building, see console...") if make.play_project.chromium_running: @@ -248,7 +256,7 @@ def patch_project(): os.chdir(fp) export_data(fp, sdk_path, is_play=True) -def build_project(is_play=False, is_publish=False): +def build_project(is_play=False, is_publish=False, in_viewport=False): # Clear flag play_project.in_viewport = False @@ -314,7 +322,7 @@ def build_project(is_play=False, is_publish=False): # Save internal assets # Export data - export_data(fp, sdk_path, is_play=is_play, is_publish=is_publish) + export_data(fp, sdk_path, is_play=is_play, is_publish=is_publish, in_viewport=in_viewport) if play_project.playproc == None: armory_progress(50) @@ -357,7 +365,7 @@ def watch_compile(mode): def watch_patch(): play_project.compileproc.wait() - result = play_project.compileproc.poll() + # result = play_project.compileproc.poll() play_project.compileproc = None play_project.compileproc_finished = True @@ -366,7 +374,7 @@ def play_project(self, in_viewport): play_project.play_area = bpy.context.area # Build data - build_project(is_play=True) + build_project(is_play=True, in_viewport=in_viewport) play_project.in_viewport = in_viewport wrd = bpy.data.worlds['Arm'] @@ -516,6 +524,7 @@ def clean_project(): def publish_project(): # Force minimize data + props.invalidate_compiled_data.enabled = False minimize = bpy.data.worlds['Arm'].ArmMinimize bpy.data.worlds['Arm'].ArmMinimize = True clean_project() @@ -523,6 +532,7 @@ def publish_project(): play_project.compileproc = compile_project(target_name=bpy.data.worlds['Arm'].ArmPublishTarget, is_publish=True) threading.Timer(0.1, watch_compile, ['publish']).start() bpy.data.worlds['Arm'].ArmMinimize = minimize + props.invalidate_compiled_data.enabled = True # Registration def register(): diff --git a/blender/make_renderpath.py b/blender/make_renderpath.py index 79d0fab6..a0fd1953 100755 --- a/blender/make_renderpath.py +++ b/blender/make_renderpath.py @@ -20,20 +20,21 @@ def reload_blend_data(): def load_library(): sdk_path = utils.get_sdk_path() data_path = sdk_path + '/armory/blender/data/data.blend' + data_names = ['forward_path', 'forward_path_low', 'deferred_path', 'deferred_path_low', 'deferred_path_high', 'hybrid_path', 'vr_path', 'pathtrace_path', 'Armory PBR'] + # Remove old + for name in data_names: + if name in bpy.data.node_groups and name != 'Armory PBR': + bpy.data.node_groups.remove(bpy.data.node_groups[name], do_unlink=True) + + # Import + data_refs = data_names.copy() with bpy.data.libraries.load(data_path, link=False) as (data_from, data_to): - data_to.node_groups = ['forward_path', 'forward_path_low', 'deferred_path', 'deferred_path_low', 'deferred_path_high', 'hybrid_path', 'vr_path', 'pathtrace_path', 'Armory PBR'] - - # TODO: cannot use for loop - bpy.data.node_groups['forward_path'].use_fake_user = True - bpy.data.node_groups['forward_path_low'].use_fake_user = True - bpy.data.node_groups['deferred_path'].use_fake_user = True - bpy.data.node_groups['deferred_path_low'].use_fake_user = True - bpy.data.node_groups['deferred_path_high'].use_fake_user = True - bpy.data.node_groups['hybrid_path'].use_fake_user = True - bpy.data.node_groups['vr_path'].use_fake_user = True - bpy.data.node_groups['pathtrace_path'].use_fake_user = True - bpy.data.node_groups['Armory PBR'].use_fake_user = True + data_to.node_groups = data_refs + + for ref in data_refs: + ref.use_fake_user = True + # bpy.data.node_groups[name].use_fake_user = True def buildNodeTrees(assets_path): s = bpy.data.filepath.split(os.path.sep) diff --git a/blender/make_world.py b/blender/make_world.py index 87e96977..48842809 100755 --- a/blender/make_world.py +++ b/blender/make_world.py @@ -140,6 +140,8 @@ def parse_surface(world, node, context): def parse_color(world, node, context, envmap_strength_const): # Env map included if node.type == 'TEX_ENVIRONMENT': + envmap_strength_const['float'] *= 2.0 # Match to cycles + texture = {} context['bind_textures'].append(texture) texture['name'] = 'envmap' @@ -187,6 +189,8 @@ def parse_color(world, node, context, envmap_strength_const): # Append sky define elif node.type == 'TEX_SKY': + envmap_strength_const['float'] *= 0.25 # Match to Cycles + bpy.data.worlds['Arm'].world_defs += '_EnvSky' # Append sky properties to material const = {} @@ -209,12 +213,10 @@ def parse_color(world, node, context, envmap_strength_const): bpy.data.worlds['Arm'].world_defs += '_Rad' sdk_path = utils.get_sdk_path() + # Use fake maps for now assets.add(sdk_path + 'armory/Assets/hosek/hosek_radiance.hdr') for i in range(0, 8): assets.add(sdk_path + 'armory/Assets/hosek/hosek_radiance_' + str(i) + '.hdr') world.world_envtex_name = 'hosek' world.world_envtex_num_mips = 8 - - # Adjust strength to match Cycles - envmap_strength_const['float'] *= 0.25 diff --git a/blender/path_tracer.py b/blender/path_tracer.py index 5d42d3dc..b2aca056 100644 --- a/blender/path_tracer.py +++ b/blender/path_tracer.py @@ -35,7 +35,7 @@ precision mediump float; #endif in vec3 initialRay; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; uniform vec3 eye; //uniform float textureWeight; uniform float timeSinceStart; @@ -321,8 +321,8 @@ void main() { """ //} - outColor = vec4(vec3(col / samples), 1.0); - outColor.rgb = pow(outColor.rgb * 0.7, vec3(1.0 / 2.2)); + fragColor = vec4(vec3(col / samples), 1.0); + fragColor.rgb = pow(fragColor.rgb * 0.7, vec3(1.0 / 2.2)); } """ diff --git a/blender/props.py b/blender/props.py index fdd6014d..d4a75217 100755 --- a/blender/props.py +++ b/blender/props.py @@ -148,18 +148,22 @@ def on_load_pre(context): def invalidate_shader_cache(self, context): # compiled.glsl changed, recompile all shaders next time - if invalidate_shader_cache.enabled: - fp = utils.get_fp() - if os.path.isdir(fp + '/build/compiled/ShaderDatas'): - shutil.rmtree(fp + '/build/compiled/ShaderDatas') + if invalidate_shader_cache.enabled == False: + return + fp = utils.get_fp() + if os.path.isdir(fp + '/build/compiled/ShaderDatas'): + shutil.rmtree(fp + '/build/compiled/ShaderDatas') invalidate_shader_cache.enabled = True # Disable invalidating during build process def invalidate_compiled_data(self, context): + if invalidate_compiled_data.enabled == False: + return fp = utils.get_fp() if os.path.isdir(fp + '/build/compiled/Assets'): shutil.rmtree(fp + '/build/compiled/Assets') if os.path.isdir(fp + '/build/compiled/ShaderDatas'): shutil.rmtree(fp + '/build/compiled/ShaderDatas') +invalidate_compiled_data.enabled = True def invalidate_mesh_data(self, context): fp = utils.get_fp() @@ -198,6 +202,7 @@ def initProperties(): ('Recast', 'Recast', 'Recast')], name = "Navigation", default='Disabled') bpy.types.World.ArmKhafile = StringProperty(name = "Khafile", description="Source appended to khafile.js") + bpy.types.World.ArmCommandLine = StringProperty(name = "Command Line", description="Commands appended to khamake") bpy.types.World.ArmMinimize = BoolProperty(name="Minimize Data", description="Export scene data in binary", default=True, update=invalidate_compiled_data) bpy.types.World.ArmOptimizeMesh = BoolProperty(name="Optimize Meshes", description="Export more efficient geometry indices, can prolong build times", default=False, update=invalidate_mesh_data) bpy.types.World.ArmSampledAnimation = BoolProperty(name="Sampled Animation", description="Export object animation as raw matrices", default=False, update=invalidate_compiled_data) @@ -855,6 +860,7 @@ class ArmoryProjectPanel(bpy.types.Panel): layout.prop(wrd, 'ArmProjectName') layout.prop(wrd, 'ArmProjectPackage') layout.prop_search(wrd, 'ArmKhafile', bpy.data, 'texts', 'Khafile') + layout.prop_search(wrd, 'ArmCommandLine', bpy.data, 'texts', 'Command Line') layout.operator('arm.publish') layout.prop(wrd, 'ArmPublishTarget') diff --git a/blender/write_data.py b/blender/write_data.py index 399d6790..69f71e1c 100644 --- a/blender/write_data.py +++ b/blender/write_data.py @@ -15,11 +15,12 @@ def write_khafilejs(is_play, export_physics, dce_full=False): shader_references = sorted(list(set(assets.shaders))) shader_data_references = sorted(list(set(assets.shader_datas))) asset_references = sorted(list(set(assets.assets))) + wrd = bpy.data.worlds['Arm'] with open('khafile.js', 'w') as f: f.write( """// Auto-generated -let project = new Project('""" + bpy.data.worlds['Arm'].ArmProjectName + """'); +let project = new Project('""" + wrd.ArmProjectName + """'); project.addSources('Sources'); """) @@ -35,7 +36,7 @@ project.addSources('Sources'); f.write("project.addParameter('-dce full');") # Electron live patching - # if is_play and bpy.data.worlds['Arm'].ArmPlayLivePatch == True and bpy.data.worlds['Arm'].ArmPlayRuntime == 'Electron': + # if is_play and wrd.ArmPlayLivePatch == True and wrd.ArmPlayRuntime == 'Electron': # f.write("project.addDefine('WITH_PATCH_ELECTRON');\n") # Native scripting @@ -52,7 +53,7 @@ project.addSources('Sources'); ref = ref.replace('\\', '/') f.write("project.addAssets('" + ref + "');\n") - if bpy.data.worlds['Arm'].ArmPlayConsole: + if wrd.ArmPlayConsole: f.write("project.addDefine('WITH_PROFILE');\n") f.write(add_armory_library(sdk_path, 'lib/zui')) font_path = sdk_path + '/armory/Assets/droid_sans.ttf' @@ -63,19 +64,19 @@ project.addSources('Sources'); # f.write(add_armory_library(sdk_path, 'lib/haxeui/haxeui-kha')) # f.write(add_armory_library(sdk_path, 'lib/haxeui/hscript')) - if bpy.data.worlds['Arm'].ArmMinimize == False: + if wrd.ArmMinimize == False: f.write("project.addDefine('WITH_JSON');\n") - if bpy.data.worlds['Arm'].ArmDeinterleavedBuffers == True: + if wrd.ArmDeinterleavedBuffers == True: f.write("project.addDefine('WITH_DEINTERLEAVED');\n") - if bpy.data.worlds['Arm'].generate_gpu_skin == False: + if wrd.generate_gpu_skin == False: f.write("project.addDefine('WITH_CPU_SKIN');\n") for d in assets.khafile_defs: f.write("project.addDefine('" + d + "');\n") - config_text = bpy.data.worlds['Arm'].ArmKhafile + config_text = wrd.ArmKhafile if config_text != '': f.write(bpy.data.texts[config_text].as_string()) diff --git a/blender/write_probes.py b/blender/write_probes.py index 33c4be57..18af32be 100644 --- a/blender/write_probes.py +++ b/blender/write_probes.py @@ -214,7 +214,8 @@ def parse_band_floats(irradiance_floats, band_line): def write_sky_irradiance(base_name): # Predefined fake spherical harmonics for now - irradiance_floats = [1.0281457342829743,1.1617608778901902,1.3886220898440544,-0.13044863139637752,-0.2794659158733846,-0.5736106907295643,0.04065421813873111,0.0434367391348577,0.03567450494792305,0.10964557605577738,0.1129839085793664,0.11261660812141877,-0.08271974283263238,-0.08068091195339556,-0.06432614970480094,-0.12517787967665814,-0.11638582546310804,-0.09743696224655113,0.20068697715947176,0.2158788783296805,0.2109374396869599,0.19636637427150455,0.19445523113118082,0.17825330699680575,0.31440860839538637,0.33041120060402407,0.30867788630062676] + # irradiance_floats = [1.0281457342829743,1.1617608778901902,1.3886220898440544,-0.13044863139637752,-0.2794659158733846,-0.5736106907295643,0.04065421813873111,0.0434367391348577,0.03567450494792305,0.10964557605577738,0.1129839085793664,0.11261660812141877,-0.08271974283263238,-0.08068091195339556,-0.06432614970480094,-0.12517787967665814,-0.11638582546310804,-0.09743696224655113,0.20068697715947176,0.2158788783296805,0.2109374396869599,0.19636637427150455,0.19445523113118082,0.17825330699680575,0.31440860839538637,0.33041120060402407,0.30867788630062676] + irradiance_floats = [0.5282714503101548,0.6576873502619733,1.0692444882409775,0.17108712865136044,-0.08840906601412168,-0.5016437779078063,-0.05123227009753221,-0.06724088656181595,-0.07651659183264257,-0.09740705087869408,-0.19569235551561795,-0.3087497307203731,0.056717192983076405,0.1109186355691673,0.20616582000220154,0.013898321643280141,0.05985657405787638,0.12638202463080392,-0.003224443014484806,0.013764449325286695,0.04288850064700093,0.1796545401960917,0.21595731080039757,0.29144356515614844,0.10152875101705996,0.2651761450155488,0.4778582813756466] # Hosek # irradiance_floats = [1.5519331988822218,2.3352207154503266,2.997277451988076,0.2673894962434794,0.4305630474135794,0.11331825259716752,-0.04453633521758638,-0.038753175134160295,-0.021302768541875794,0.00055858020486499,0.000371654770334503,0.000126606145406403,-0.000135708721978705,-0.000787399554583089,-0.001550090690860059,0.021947399048903773,0.05453650591711572,0.08783641266630278,0.17053593578630663,0.14734127083304463,0.07775404698816404,-2.6924363189795e-05,-7.9350169701934e-05,-7.559914435231e-05,0.27035455385870993,0.23122918445556914,0.12158817295211832] # for i in range(0, len(irradiance_floats)): diff --git a/raw/blend_pass/blend_pass.frag.glsl b/raw/blend_pass/blend_pass.frag.glsl index fa5169f5..6411439e 100644 --- a/raw/blend_pass/blend_pass.frag.glsl +++ b/raw/blend_pass/blend_pass.frag.glsl @@ -7,8 +7,8 @@ precision mediump float; uniform sampler2D tex; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { - outColor = texture(tex, texCoord); + fragColor = texture(tex, texCoord); } diff --git a/raw/bloom_pass/bloom_pass.frag.glsl b/raw/bloom_pass/bloom_pass.frag.glsl index 9a7c5143..dbd11809 100644 --- a/raw/bloom_pass/bloom_pass.frag.glsl +++ b/raw/bloom_pass/bloom_pass.frag.glsl @@ -9,7 +9,7 @@ precision mediump float; uniform sampler2D tex; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; //const float bloomTreshold = 3.0; @@ -17,9 +17,9 @@ void main() { vec4 col = texture(tex, texCoord); float brightness = dot(col.rgb, vec3(0.2126, 0.7152, 0.0722)); if (brightness > bloomTreshold) { - outColor.rgb = vec3(col.rgb); + fragColor.rgb = vec3(col.rgb); return; } - outColor.rgb = vec3(0.0); + fragColor.rgb = vec3(0.0); } diff --git a/raw/blur_adaptive_pass/blur_adaptive_pass.frag.glsl b/raw/blur_adaptive_pass/blur_adaptive_pass.frag.glsl index d22c77b5..4caa07b1 100644 --- a/raw/blur_adaptive_pass/blur_adaptive_pass.frag.glsl +++ b/raw/blur_adaptive_pass/blur_adaptive_pass.frag.glsl @@ -14,7 +14,7 @@ uniform vec2 dir; uniform vec2 screenSize; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; vec2 unpackFloat(float f) { return vec2(floor(f) / 1000.0, fract(f)); @@ -24,7 +24,7 @@ void main() { vec2 tc = texCoord * ssrTextureScale; float roughness = unpackFloat(texture(gbuffer0, texCoord).b).y; // if (roughness == 0.0) { // Always blur for now, non blured output can produce noise - // outColor = texture(tex, tc); + // fragColor = texture(tex, tc); // return; // } @@ -45,5 +45,5 @@ void main() { // result /= vec3(11.0); result /= vec3(5.0); - outColor.rgb = vec3(result); + fragColor.rgb = vec3(result); } diff --git a/raw/blur_edge_pass/blur_edge_pass.frag.glsl b/raw/blur_edge_pass/blur_edge_pass.frag.glsl index 58c5fa0f..29542462 100644 --- a/raw/blur_edge_pass/blur_edge_pass.frag.glsl +++ b/raw/blur_edge_pass/blur_edge_pass.frag.glsl @@ -14,7 +14,7 @@ uniform vec2 dir; uniform vec2 screenSize; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; const float blurWeights[10] = float[] (0.132572, 0.125472, 0.106373, 0.08078, 0.05495, 0.033482, 0.018275, 0.008934, 0.003912, 0.001535); const float discardThreshold = 0.95; @@ -66,7 +66,7 @@ void main() { // result += texture(tex, tc - (step * 3.5)).rgb; // result += texture(tex, tc - (step * 4.5)).rgb; // result /= vec3(9.0); - // outColor.rgb = vec3(result); + // fragColor.rgb = vec3(result); vec3 nor = getNor(texture(gbuffer0, texCoord).rg); @@ -87,6 +87,6 @@ void main() { // } result /= weight; - // outColor = vec4(result.rgb, 1.0); - outColor = vec4(result.rrr, 1.0); // SSAO only + // fragColor = vec4(result.rgb, 1.0); + fragColor = vec4(result.rrr, 1.0); // SSAO only } diff --git a/raw/blur_gaus_pass/blur_gaus_pass.frag.glsl b/raw/blur_gaus_pass/blur_gaus_pass.frag.glsl index 18a1f987..00f9d617 100644 --- a/raw/blur_gaus_pass/blur_gaus_pass.frag.glsl +++ b/raw/blur_gaus_pass/blur_gaus_pass.frag.glsl @@ -12,7 +12,7 @@ uniform vec2 dir; uniform vec2 screenSize; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; // const float weight[5] = float[] (0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216); // const float weight[8] = float[] (0.197448, 0.174697, 0.120999, 0.065602, 0.02784, 0.009246, 0.002403, 0.000489); @@ -39,5 +39,5 @@ void main() { result += texture(tex, texCoord + step * 7.5).rgb * weight[7] * bloomStrength; result += texture(tex, texCoord - step * 7.5).rgb * weight[7] * bloomStrength; - outColor.rgb = vec3(result); + fragColor.rgb = vec3(result); } diff --git a/raw/blur_pass/blur_pass.frag.glsl b/raw/blur_pass/blur_pass.frag.glsl index 61eb4c37..a73a2468 100644 --- a/raw/blur_pass/blur_pass.frag.glsl +++ b/raw/blur_pass/blur_pass.frag.glsl @@ -10,7 +10,7 @@ uniform vec2 dir; uniform vec2 screenSize; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { vec2 step = dir / screenSize; @@ -28,5 +28,5 @@ void main() { result += texture(tex, texCoord - (step * 5.5)).rgb; result /= vec3(11.0); - outColor.rgb = vec3(result); + fragColor.rgb = vec3(result); } diff --git a/raw/combine_pass/combine_pass.frag.glsl b/raw/combine_pass/combine_pass.frag.glsl index abec20cd..30522b06 100644 --- a/raw/combine_pass/combine_pass.frag.glsl +++ b/raw/combine_pass/combine_pass.frag.glsl @@ -8,7 +8,7 @@ uniform sampler2D tex; uniform sampler2D tex2; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; const float exposure = 1.0; const float gamma = 2.2; @@ -25,7 +25,7 @@ void main() { // Gamma correction // result = pow(result, vec3(1.0 / gamma)); - // outColor.rgb = result; + // fragColor.rgb = result; - outColor.rgb = col; + fragColor.rgb = col; } diff --git a/raw/compositor_pass/compositor_pass.frag.glsl b/raw/compositor_pass/compositor_pass.frag.glsl index ebdf2cdd..afe183d1 100644 --- a/raw/compositor_pass/compositor_pass.frag.glsl +++ b/raw/compositor_pass/compositor_pass.frag.glsl @@ -33,7 +33,7 @@ in vec2 texCoord; #ifdef _CompoPos in vec3 viewRay; #endif -out vec4 outColor; +out vec4 fragColor; const float focus_depth = 0.5; @@ -311,5 +311,5 @@ void main() { col.rgb *= 1.0 - step(0.5 - compoLetterboxSize, abs(0.5 - texCoord.y)); #endif - outColor = col; + fragColor = col; } diff --git a/raw/copy_pass/copy_pass.frag.glsl b/raw/copy_pass/copy_pass.frag.glsl index fa5169f5..6411439e 100644 --- a/raw/copy_pass/copy_pass.frag.glsl +++ b/raw/copy_pass/copy_pass.frag.glsl @@ -7,8 +7,8 @@ precision mediump float; uniform sampler2D tex; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { - outColor = texture(tex, texCoord); + fragColor = texture(tex, texCoord); } diff --git a/raw/debug_normals/debug_normals.frag.glsl b/raw/debug_normals/debug_normals.frag.glsl index 30d9256d..36ada089 100644 --- a/raw/debug_normals/debug_normals.frag.glsl +++ b/raw/debug_normals/debug_normals.frag.glsl @@ -12,7 +12,7 @@ uniform vec3 eyeLook; in vec2 texCoord; in vec3 viewRay; -out vec4 outColor; +out vec4 fragColor; 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)); @@ -44,7 +44,7 @@ void main() { n.xy = n.z >= 0.0 ? enc.xy : octahedronWrap(enc.xy); n = normalize(n); - outColor = vec4(n * 0.5 + 0.5, 1.0); + fragColor = vec4(n * 0.5 + 0.5, 1.0); // vec3 p = getPos(depth); // vec3 baseColor = g1.rgb; diff --git a/raw/debug_velocity/debug_velocity.frag.glsl b/raw/debug_velocity/debug_velocity.frag.glsl index 5e7b74f2..07f02f6e 100644 --- a/raw/debug_velocity/debug_velocity.frag.glsl +++ b/raw/debug_velocity/debug_velocity.frag.glsl @@ -9,9 +9,9 @@ precision mediump float; uniform sampler2D tex; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { vec4 col = texture(tex, texCoord); - outColor = vec4(col.r * 10.0, col.g * 10.0, 0.0, 1.0); + fragColor = vec4(col.r * 10.0, col.g * 10.0, 0.0, 1.0); } diff --git a/raw/deferred/decals.frag.glsl b/raw/deferred/decals.frag.glsl index e91bda18..7758c99d 100644 --- a/raw/deferred/decals.frag.glsl +++ b/raw/deferred/decals.frag.glsl @@ -30,7 +30,7 @@ uniform mat4 V; in vec4 wvpposition; in vec4 matColor; // in vec3 orientation; -out vec4[2] outColor; +out vec4[2] fragColor; mat3 cotangentFrame(vec3 nor, vec3 pos, vec2 uv) { // Get edge vectors of the pixel triangle @@ -98,9 +98,9 @@ void main() { // Alpha write is disabled in shader res, we acces all channels for blending // Use separate texture for base color in the future - outColor[1].rgb = baseColor.rgb; - outColor[1].a = baseColor.a; - // outColor[1].a = packFloat(roughness, metalness) * baseColor.a; + fragColor[1].rgb = baseColor.rgb; + fragColor[1].a = baseColor.a; + // fragColor[1].a = packFloat(roughness, metalness) * baseColor.a; #ifdef _MetTex float metalness = texture(smetal, texCoord).r; @@ -128,15 +128,15 @@ void main() { n /= (abs(n.x) + abs(n.y) + abs(n.z)); n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy); - outColor[0].rg = n.xy; + fragColor[0].rg = n.xy; #else - outColor[0].rg = vec2(1.0); + fragColor[0].rg = vec2(1.0); #endif - // outColor[0].b unused for now so we can rewrite it - outColor[0].b = 0.0; + // fragColor[0].b unused for now so we can rewrite it + fragColor[0].b = 0.0; // use separete RG texture for normal storage in the future // Color mask does not disable write for all buffers so mask is overwritten // Half of color alpha to soft normals blend - outColor[0].a = baseColor.a / 2.0; + fragColor[0].a = baseColor.a / 2.0; } diff --git a/raw/deferred/depthwrite.frag.glsl b/raw/deferred/depthwrite.frag.glsl index feeba1d4..c5fc60c6 100644 --- a/raw/deferred/depthwrite.frag.glsl +++ b/raw/deferred/depthwrite.frag.glsl @@ -9,7 +9,7 @@ precision mediump float; // #endif // in vec4 position; -out vec4 outColor; +out vec4 fragColor; void main() { @@ -18,5 +18,5 @@ void main() { // gl_FragDepth = depth; // gl_FragColor = vec4(depth, 0.0, 0.0, 1.0); - outColor = vec4(0.0, 0.0, 0.0, 1.0); + fragColor = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/raw/deferred/mesh.frag.glsl b/raw/deferred/mesh.frag.glsl index 85916fcc..9693da4b 100644 --- a/raw/deferred/mesh.frag.glsl +++ b/raw/deferred/mesh.frag.glsl @@ -73,9 +73,9 @@ in vec4 matColor; #endif #ifdef _Veloc - out vec4[3] outColor; + out vec4[3] fragColor; #else - out vec4[2] outColor; + out vec4[2] fragColor; #endif float packFloat(float f1, float f2) { @@ -260,15 +260,15 @@ void main() { mask_probe = probeID + clampres; } } - outColor[0] = vec4(n.xy, packFloat(metalness, roughness), mask_probe); + fragColor[0] = vec4(n.xy, packFloat(metalness, roughness), mask_probe); #else - outColor[0] = vec4(n.xy, packFloat(metalness, roughness), mask); + fragColor[0] = vec4(n.xy, packFloat(metalness, roughness), mask); #endif - outColor[1] = vec4(baseColor.rgb, occ); + fragColor[1] = vec4(baseColor.rgb, occ); #ifdef _Veloc vec2 posa = (wvppos.xy / wvppos.w) * 0.5 + 0.5; vec2 posb = (prevwvppos.xy / prevwvppos.w) * 0.5 + 0.5; - outColor[2].rg = vec2(posa - posb); + fragColor[2].rg = vec2(posa - posb); #endif } diff --git a/raw/deferred/meshheight.frag.glsl b/raw/deferred/meshheight.frag.glsl index 7b1d33e7..ba5f3250 100644 --- a/raw/deferred/meshheight.frag.glsl +++ b/raw/deferred/meshheight.frag.glsl @@ -43,7 +43,7 @@ in vec2 te_texCoord; in vec3 te_normal; #endif -out vec4[2] outColor; +out vec4[2] fragColor; float packFloat(float f1, float f2) { float index = floor(f1 * 1000.0); // Temporary @@ -100,6 +100,6 @@ void main() { n /= (abs(n.x) + abs(n.y) + abs(n.z)); n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy); - outColor[0] = vec4(n.xy, packFloat(metalness, roughness), mask); - outColor[1] = vec4(baseColor.rgb, occ); + fragColor[0] = vec4(n.xy, packFloat(metalness, roughness), mask); + fragColor[1] = vec4(baseColor.rgb, occ); } diff --git a/raw/deferred/overlay.frag.glsl b/raw/deferred/overlay.frag.glsl index 4b82e432..6113bc16 100644 --- a/raw/deferred/overlay.frag.glsl +++ b/raw/deferred/overlay.frag.glsl @@ -90,7 +90,7 @@ in vec3 eyeDir; #else in vec3 normal; #endif -out vec4 outColor; +out vec4 fragColor; #ifndef _NoShadows // float linstep(float low, float high, float v) { @@ -606,9 +606,9 @@ void main() { sf = step(0.5, sf); } - outColor.rgb = ambientMaterial + (df * diffuseMaterial + sf * specularMaterial) * visibility; + fragColor.rgb = ambientMaterial + (df * diffuseMaterial + sf * specularMaterial) * visibility; float edgeDetection = (dot(v, n) < 0.1) ? 0.0 : 1.0; - outColor.rgb *= edgeDetection; + fragColor.rgb *= edgeDetection; // const int levels = 4; // const float scaleFactor = 1.0 / levels; @@ -626,7 +626,7 @@ void main() { // float specMask = (pow(dot(h, n), shininess) > 0.4) ? 1.0 : 0.0; // float edgeDetection = (dot(v, n) > 0.3) ? 1.0 : 0.0; - // outColor.rgb = edgeDetection * ((diffuseColor + specular * specMask) * visibility + ambientMaterial); + // fragColor.rgb = edgeDetection * ((diffuseColor + specular * specMask) * visibility + ambientMaterial); #endif @@ -682,20 +682,20 @@ void main() { indirect += indirectSpecular; #endif indirect = indirect * envmapStrength; // * lightColor * lightStrength; - outColor = vec4(vec3(direct * visibility + indirect), 1.0); + fragColor = vec4(vec3(direct * visibility + indirect), 1.0); #ifdef _OccTex vec3 occ = texture(socclusion, texCoord).rgb; - outColor.rgb *= occ; + fragColor.rgb *= occ; #else - outColor.rgb *= occlusion; + fragColor.rgb *= occlusion; #endif // LTC - // outColor.rgb = ltccol * 10.0 * visibility + indirect / 14.0; + // fragColor.rgb = ltccol * 10.0 * visibility + indirect / 14.0; #ifdef _LDR - outColor.rgb = vec3(pow(outColor.rgb, vec3(1.0 / 2.2))); + fragColor.rgb = vec3(pow(fragColor.rgb, vec3(1.0 / 2.2))); // #else - // outColor = vec4(outColor.rgb, outColor.a); + // fragColor = vec4(fragColor.rgb, fragColor.a); #endif } diff --git a/raw/deferred/shadowmap.frag.glsl b/raw/deferred/shadowmap.frag.glsl index 6219deb9..7cf0d394 100644 --- a/raw/deferred/shadowmap.frag.glsl +++ b/raw/deferred/shadowmap.frag.glsl @@ -9,7 +9,7 @@ precision mediump float; #endif // in vec4 position; -out vec4 outColor; +out vec4 fragColor; void main() { @@ -18,7 +18,7 @@ void main() { // gl_FragDepth = depth; // gl_FragColor = vec4(depth, 0.0, 0.0, 1.0); - outColor = vec4(0.0, 0.0, 0.0, 1.0); + fragColor = vec4(0.0, 0.0, 0.0, 1.0); // VSM // float dx = dFdx(depth); diff --git a/raw/deferred/shadowmapheight.frag.glsl b/raw/deferred/shadowmapheight.frag.glsl index a6c9e2b6..2f56dce8 100644 --- a/raw/deferred/shadowmapheight.frag.glsl +++ b/raw/deferred/shadowmapheight.frag.glsl @@ -8,8 +8,8 @@ precision mediump float; #define _BaseTex #endif -out vec4 outColor; +out vec4 fragColor; void main() { - outColor = vec4(0.0, 0.0, 0.0, 1.0); + fragColor = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/raw/deferred/translucent.frag.glsl b/raw/deferred/translucent.frag.glsl index 64aa3f6a..507233b7 100644 --- a/raw/deferred/translucent.frag.glsl +++ b/raw/deferred/translucent.frag.glsl @@ -64,7 +64,7 @@ in vec3 eyeDir; #else in vec3 normal; #endif -out vec4[2] outColor; +out vec4[2] fragColor; vec3 shIrradiance(vec3 nor, float scale) { const float c1 = 0.429043; @@ -200,6 +200,10 @@ void main() { roughness *= roughnessStrength; #endif +#ifdef _OccTex + float occlusion = texture(socclusion, texCoord).r; +#endif + // Direct vec3 direct = diffuseBRDF(albedo, roughness, dotNV, dotNL, dotVH, dotLV) + specularBRDF(f0, roughness, dotNL, dotNH, dotNV, dotVH, dotLH); @@ -248,6 +252,6 @@ void main() { // revealage = premultipliedReflect.a; // RT0 = vec4(C * w, a) // RT1 = vec4(vec3(a * w), 1) - outColor[0] = vec4(premultipliedReflect.rgb * w, premultipliedReflect.a); - outColor[1] = vec4(premultipliedReflect.a * w, 0.0, 0.0, 1.0); + fragColor[0] = vec4(premultipliedReflect.rgb * w, premultipliedReflect.a); + fragColor[1] = vec4(premultipliedReflect.a * w, 0.0, 0.0, 1.0); } diff --git a/raw/deferred_indirect/deferred_indirect.frag.glsl b/raw/deferred_indirect/deferred_indirect.frag.glsl index e3154766..5e094979 100644 --- a/raw/deferred_indirect/deferred_indirect.frag.glsl +++ b/raw/deferred_indirect/deferred_indirect.frag.glsl @@ -35,7 +35,7 @@ in vec2 texCoord; #ifdef _Rad in vec3 viewRay; #endif -out vec4 outColor; +out vec4 fragColor; #ifdef _Rad float getMipLevelFromRoughness(float roughness) { @@ -233,5 +233,5 @@ void main() { indirect *= texture(ssaotex, texCoord).r; // SSAO #endif - outColor.rgb = indirect; + fragColor.rgb = indirect; } diff --git a/raw/deferred_light/deferred_light.frag.glsl b/raw/deferred_light/deferred_light.frag.glsl index 7d52fcad..e5da22e3 100644 --- a/raw/deferred_light/deferred_light.frag.glsl +++ b/raw/deferred_light/deferred_light.frag.glsl @@ -96,7 +96,7 @@ uniform vec3 eye; // in vec2 texCoord; in vec4 wvpposition; // in vec3 viewRay; -out vec4 outColor; +out vec4 fragColor; // Separable SSS Transmittance Function, ref to sss_pass #ifdef _SSS @@ -795,7 +795,7 @@ void main() { #endif // Direct - outColor = vec4(vec3(direct * visibility), 1.0); + fragColor = vec4(vec3(direct * visibility), 1.0); // Voxels test.. #ifdef _VoxelGI @@ -828,13 +828,13 @@ void main() { vec3 indirect1 = indirectDiffusea * diffOcclusion + indirectSpecular; indirect1 *= texture(ssaotex, texCoord).r; - outColor.rgb += indirect1; + fragColor.rgb += indirect1; #endif // LTC // float sinval = (sin(time) * 0.5 + 0.5); - // vec4 outColor = vec4(1.0); + // vec4 fragColor = vec4(1.0); // float rectSizeX = 4.000 + sin(time) * 4.0; // float rectSizeY = 1.2;// + sin(time * 2.0); // vec3 ex = vec3(1, 0, 0)*rectSizeX; @@ -861,10 +861,10 @@ void main() { // ltcdiff *= vec3(1.0, 1.0 - sinval, 1.0 - sinval); // vec3 ltccol = ltcspec + ltcdiff * albedo; // ltccol /= 2.0*PI; - // outColor.rgb = ltccol * 5.0 * visibility + (indirect / 14.0 * ao * (rectSizeX / 6.0) ); - // // outColor.rgb = ltccol * visibility + (indirect / 2.0 * ao); + // fragColor.rgb = ltccol * 5.0 * visibility + (indirect / 14.0 * ao * (rectSizeX / 6.0) ); + // // fragColor.rgb = ltccol * visibility + (indirect / 2.0 * ao); - // outColor = vec4(pow(outColor.rgb, vec3(1.0 / 2.2)), outColor.a); - // outputColor = vec4(outColor.rgb, outColor.a); - //gl_FragColor = vec4(outColor.rgb, outColor.a); + // fragColor = vec4(pow(fragColor.rgb, vec3(1.0 / 2.2)), fragColor.a); + // outputColor = vec4(fragColor.rgb, fragColor.a); + //gl_FragColor = vec4(fragColor.rgb, fragColor.a); } diff --git a/raw/env/env.frag.glsl b/raw/env/env.frag.glsl index af37bdc6..92644d34 100644 --- a/raw/env/env.frag.glsl +++ b/raw/env/env.frag.glsl @@ -38,7 +38,7 @@ uniform float envmapStrength; // From world material // in vec2 texCoord; in vec3 normal; -out vec4 outColor; +out vec4 fragColor; #ifdef _EnvSky vec3 hosekWilkie(float cos_theta, float gamma, float cos_gamma) { @@ -223,5 +223,5 @@ void main() { R = pow(R, vec3(1.0 / 2.2)); #endif - outColor = vec4(R, 1.0); + fragColor = vec4(R, 1.0); } diff --git a/raw/forward/mesh.frag.glsl b/raw/forward/mesh.frag.glsl index 8d74eb93..377b870d 100644 --- a/raw/forward/mesh.frag.glsl +++ b/raw/forward/mesh.frag.glsl @@ -116,7 +116,7 @@ in vec3 eyeDir; #else in vec3 normal; #endif -out vec4 outColor; +out vec4 fragColor; #ifndef _NoShadows #ifndef _PCSS @@ -859,9 +859,9 @@ void main() { // sf = step(0.5, sf); // } -// outColor.rgb = ambientMaterial + (df * diffuseMaterial + sf * specularMaterial) * visibility; +// fragColor.rgb = ambientMaterial + (df * diffuseMaterial + sf * specularMaterial) * visibility; // float edgeDetection = (dot(v, n) < 0.1) ? 0.0 : 1.0; -// outColor.rgb *= edgeDetection; +// fragColor.rgb *= edgeDetection; // // const int levels = 4; // // const float scaleFactor = 1.0 / levels; @@ -879,7 +879,7 @@ void main() { // // float specMask = (pow(dot(h, n), shininess) > 0.4) ? 1.0 : 0.0; // // float edgeDetection = (dot(v, n) > 0.3) ? 1.0 : 0.0; -// // outColor.rgb = edgeDetection * ((diffuseColor + specular * specMask) * visibility + ambientMaterial); +// // fragColor.rgb = edgeDetection * ((diffuseColor + specular * specMask) * visibility + ambientMaterial); // #endif @@ -979,26 +979,26 @@ void main() { #endif - outColor = vec4(vec3(direct * visibility + indirect), 1.0); + fragColor = vec4(vec3(direct * visibility + indirect), 1.0); #ifdef _OccTex vec3 occ = texture(socclusion, texCoord).rgb; - outColor.rgb *= occ; + fragColor.rgb *= occ; #else - outColor.rgb *= occlusion; + fragColor.rgb *= occlusion; #endif // LTC - // outColor.rgb = ltccol * 10.0 * visibility + indirect / 14.0; + // fragColor.rgb = ltccol * 10.0 * visibility + indirect / 14.0; #ifdef _LDR - // gl_FragColor = vec4(pow(outColor.rgb, vec3(1.0 / 2.2)), outColor.a); - outColor = vec4(pow(outColor.rgb, vec3(1.0 / 2.2)), outColor.a); + // gl_FragColor = vec4(pow(fragColor.rgb, vec3(1.0 / 2.2)), fragColor.a); + fragColor = vec4(pow(fragColor.rgb, vec3(1.0 / 2.2)), fragColor.a); // #else - // gl_FragColor = vec4(outColor.rgb, outColor.a); - //outColor = vec4(outColor.rgb, outColor.a); + // gl_FragColor = vec4(fragColor.rgb, fragColor.a); + //fragColor = vec4(fragColor.rgb, fragColor.a); #endif } diff --git a/raw/forward/overlay.frag.glsl b/raw/forward/overlay.frag.glsl index e324eb36..974d9ea2 100644 --- a/raw/forward/overlay.frag.glsl +++ b/raw/forward/overlay.frag.glsl @@ -89,7 +89,7 @@ in vec3 eyeDir; #else in vec3 normal; #endif -out vec4 outColor; +out vec4 fragColor; #ifndef _NoShadows // float linstep(float low, float high, float v) { @@ -605,9 +605,9 @@ void main() { sf = step(0.5, sf); } - outColor.rgb = ambientMaterial + (df * diffuseMaterial + sf * specularMaterial) * visibility; + fragColor.rgb = ambientMaterial + (df * diffuseMaterial + sf * specularMaterial) * visibility; float edgeDetection = (dot(v, n) < 0.1) ? 0.0 : 1.0; - outColor.rgb *= edgeDetection; + fragColor.rgb *= edgeDetection; // const int levels = 4; // const float scaleFactor = 1.0 / levels; @@ -625,7 +625,7 @@ void main() { // float specMask = (pow(dot(h, n), shininess) > 0.4) ? 1.0 : 0.0; // float edgeDetection = (dot(v, n) > 0.3) ? 1.0 : 0.0; - // outColor.rgb = edgeDetection * ((diffuseColor + specular * specMask) * visibility + ambientMaterial); + // fragColor.rgb = edgeDetection * ((diffuseColor + specular * specMask) * visibility + ambientMaterial); #endif @@ -681,20 +681,20 @@ void main() { indirect += indirectSpecular; #endif indirect = indirect * lightColor * lightStrength * envmapStrength; - outColor = vec4(vec3(direct * visibility + indirect), 1.0); + fragColor = vec4(vec3(direct * visibility + indirect), 1.0); #ifdef _OccTex vec3 occ = texture(socclusion, texCoord).rgb; - outColor.rgb *= occ; + fragColor.rgb *= occ; #else - outColor.rgb *= occlusion; + fragColor.rgb *= occlusion; #endif // LTC - // outColor.rgb = ltccol * 10.0 * visibility + indirect / 14.0; + // fragColor.rgb = ltccol * 10.0 * visibility + indirect / 14.0; #ifdef _LDR - outColor.rgb = vec3(pow(outColor.rgb, vec3(1.0 / 2.2))); + fragColor.rgb = vec3(pow(fragColor.rgb, vec3(1.0 / 2.2))); // #else - // outColor = vec4(outColor.rgb, outColor.a); + // fragColor = vec4(fragColor.rgb, fragColor.a); #endif } diff --git a/raw/forward/shadowmap.frag.glsl b/raw/forward/shadowmap.frag.glsl index 6219deb9..7cf0d394 100644 --- a/raw/forward/shadowmap.frag.glsl +++ b/raw/forward/shadowmap.frag.glsl @@ -9,7 +9,7 @@ precision mediump float; #endif // in vec4 position; -out vec4 outColor; +out vec4 fragColor; void main() { @@ -18,7 +18,7 @@ void main() { // gl_FragDepth = depth; // gl_FragColor = vec4(depth, 0.0, 0.0, 1.0); - outColor = vec4(0.0, 0.0, 0.0, 1.0); + fragColor = vec4(0.0, 0.0, 0.0, 1.0); // VSM // float dx = dFdx(depth); diff --git a/raw/fxaa_pass/fxaa_pass.frag.glsl b/raw/fxaa_pass/fxaa_pass.frag.glsl index 9449c22c..4ff09400 100644 --- a/raw/fxaa_pass/fxaa_pass.frag.glsl +++ b/raw/fxaa_pass/fxaa_pass.frag.glsl @@ -8,7 +8,7 @@ uniform sampler2D tex; uniform vec2 texStep; // screenSizeInv in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { const float FXAA_REDUCE_MIN = 1.0 / 128.0; @@ -56,6 +56,6 @@ void main() { texture(tex, texCoord + dir * 0.5).rgb); float lumaB = dot(rgbB, luma); - if ((lumaB < lumaMin) || (lumaB > lumaMax)) outColor = vec4(rgbA, texColor.a); - else outColor = vec4(rgbB, texColor.a); + if ((lumaB < lumaMin) || (lumaB > lumaMax)) fragColor = vec4(rgbA, texColor.a); + else fragColor = vec4(rgbB, texColor.a); } diff --git a/raw/grease_pencil/grease_pencil.frag.glsl b/raw/grease_pencil/grease_pencil.frag.glsl index 2936fc94..87b2c6c0 100644 --- a/raw/grease_pencil/grease_pencil.frag.glsl +++ b/raw/grease_pencil/grease_pencil.frag.glsl @@ -6,8 +6,8 @@ precision mediump float; in vec4 color; -out vec4 outColor; +out vec4 fragColor; void main() { - outColor = color; + fragColor = color; } diff --git a/raw/grease_pencil/grease_pencil_shadows.frag.glsl b/raw/grease_pencil/grease_pencil_shadows.frag.glsl index ad268ea5..1a50da80 100644 --- a/raw/grease_pencil/grease_pencil_shadows.frag.glsl +++ b/raw/grease_pencil/grease_pencil_shadows.frag.glsl @@ -4,8 +4,8 @@ precision mediump float; #endif -out vec4 outColor; +out vec4 fragColor; void main() { - outColor = vec4(0.0, 0.0, 0.0, 1.0); + fragColor = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/raw/hybrid/depthwrite.frag.glsl b/raw/hybrid/depthwrite.frag.glsl index bc3403df..f5895a39 100644 --- a/raw/hybrid/depthwrite.frag.glsl +++ b/raw/hybrid/depthwrite.frag.glsl @@ -4,8 +4,8 @@ precision mediump float; #endif -out vec4 outColor; +out vec4 fragColor; void main() { - outColor = vec4(0.0, 0.0, 0.0, 1.0); + fragColor = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/raw/hybrid/mesh.frag.glsl b/raw/hybrid/mesh.frag.glsl index 8e8495f1..4574c7df 100644 --- a/raw/hybrid/mesh.frag.glsl +++ b/raw/hybrid/mesh.frag.glsl @@ -78,7 +78,7 @@ in vec3 eyeDir; #else in vec3 normal; #endif -out vec4[2] outColor; +out vec4[2] fragColor; #ifndef _NoShadows #ifndef _PCSS @@ -597,12 +597,12 @@ void main() { #ifdef _LDR outputColor.rgb = tonemapUncharted2(outputColor.rgb); - outColor[0] = vec4(pow(outputColor.rgb, vec3(1.0 / 2.2)), visibility); + fragColor[0] = vec4(pow(outputColor.rgb, vec3(1.0 / 2.2)), visibility); #else - outColor[0] = vec4(outputColor.rgb, visibility); + fragColor[0] = vec4(outputColor.rgb, visibility); #endif n /= (abs(n.x) + abs(n.y) + abs(n.z)); n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy); - outColor[1] = vec4(n.xy, packFloat(metalness, roughness), 0.0); + fragColor[1] = vec4(n.xy, packFloat(metalness, roughness), 0.0); } diff --git a/raw/hybrid/overlay.frag.glsl b/raw/hybrid/overlay.frag.glsl index ff63d4c0..ea356c2d 100644 --- a/raw/hybrid/overlay.frag.glsl +++ b/raw/hybrid/overlay.frag.glsl @@ -61,7 +61,7 @@ in vec3 eyeDir; #else in vec3 normal; #endif -out vec4 outColor; +out vec4 fragColor; #ifndef _NoShadows float texture2DCompare(vec2 uv, float compare) { @@ -320,18 +320,18 @@ void main() { indirect += indirectSpecular; #endif indirect = indirect * lightColor * lightStrength * envmapStrength; - outColor = vec4(vec3(direct * visibility + indirect), 1.0); + fragColor = vec4(vec3(direct * visibility + indirect), 1.0); #ifdef _OccTex vec3 occ = texture(socclusion, texCoord).rgb; - outColor.rgb *= occ; + fragColor.rgb *= occ; #else - outColor.rgb *= occlusion; + fragColor.rgb *= occlusion; #endif #ifdef _LDR - outColor.rgb = vec3(pow(outColor.rgb, vec3(1.0 / 2.2))); + fragColor.rgb = vec3(pow(fragColor.rgb, vec3(1.0 / 2.2))); // #else - // outColor = vec4(outColor.rgb, outColor.a); + // fragColor = vec4(fragColor.rgb, fragColor.a); #endif } diff --git a/raw/hybrid/shadowmap.frag.glsl b/raw/hybrid/shadowmap.frag.glsl index bc3403df..f5895a39 100644 --- a/raw/hybrid/shadowmap.frag.glsl +++ b/raw/hybrid/shadowmap.frag.glsl @@ -4,8 +4,8 @@ precision mediump float; #endif -out vec4 outColor; +out vec4 fragColor; void main() { - outColor = vec4(0.0, 0.0, 0.0, 1.0); + fragColor = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/raw/lightshafts_pass/lightshafts_pass.frag.glsl b/raw/lightshafts_pass/lightshafts_pass.frag.glsl index 7311dce6..9aa12c9f 100644 --- a/raw/lightshafts_pass/lightshafts_pass.frag.glsl +++ b/raw/lightshafts_pass/lightshafts_pass.frag.glsl @@ -10,7 +10,7 @@ uniform sampler2D tex; uniform sampler2D gbufferD; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { const float decay = 0.96815; @@ -30,5 +30,5 @@ void main() { color *= illuminationDecay * weight; illuminationDecay *= decay; } - outColor = color; + fragColor = color; } diff --git a/raw/motion_blur_pass/motion_blur_pass.frag.glsl b/raw/motion_blur_pass/motion_blur_pass.frag.glsl index 96e3d42e..54966cac 100644 --- a/raw/motion_blur_pass/motion_blur_pass.frag.glsl +++ b/raw/motion_blur_pass/motion_blur_pass.frag.glsl @@ -18,7 +18,7 @@ uniform vec3 eyeLook; in vec2 texCoord; in vec3 viewRay; -out vec4 outColor; +out vec4 fragColor; // const float motionBlurIntensity = 1.0; // const int samples = 8; @@ -47,13 +47,13 @@ void main() { // Do not blur masked objects if (texture(gbuffer0, texCoord).a == 1.0) { - outColor = color; + fragColor = color; return; } float depth = texture(gbufferD, texCoord).r * 2.0 - 1.0; if (depth == 1.0) { - outColor = color; + fragColor = color; return; } @@ -114,5 +114,5 @@ void main() { // } vec4 finalColor = color / processed; - outColor = finalColor; + fragColor = finalColor; } diff --git a/raw/motion_blur_veloc_pass/motion_blur_veloc_pass.frag.glsl b/raw/motion_blur_veloc_pass/motion_blur_veloc_pass.frag.glsl index ec51e16d..d028852a 100644 --- a/raw/motion_blur_veloc_pass/motion_blur_veloc_pass.frag.glsl +++ b/raw/motion_blur_veloc_pass/motion_blur_veloc_pass.frag.glsl @@ -15,7 +15,7 @@ uniform sampler2D tex; // uniform vec2 texStep; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { vec2 velocity = texture(sveloc, texCoord).rg; @@ -25,7 +25,7 @@ void main() { // Do not blur masked objects if (texture(gbuffer0, texCoord).a == 1.0) { - outColor = col; + fragColor = col; return; } @@ -55,5 +55,5 @@ void main() { // } col /= float(samples + 1); - outColor = col; + fragColor = col; } diff --git a/raw/pt_final_pass/pt_final_pass.frag.glsl b/raw/pt_final_pass/pt_final_pass.frag.glsl index 40c45306..4d3a8f75 100644 --- a/raw/pt_final_pass/pt_final_pass.frag.glsl +++ b/raw/pt_final_pass/pt_final_pass.frag.glsl @@ -7,9 +7,9 @@ precision mediump float; uniform sampler2D gbuffer; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { vec3 col = texture(gbuffer, texCoord).rgb; - outColor = vec4(col, 1.0); + fragColor = vec4(col, 1.0); } diff --git a/raw/pt_trace_pass/pt_trace_pass.frag.glsl b/raw/pt_trace_pass/pt_trace_pass.frag.glsl index fc49c917..64464a11 100644 --- a/raw/pt_trace_pass/pt_trace_pass.frag.glsl +++ b/raw/pt_trace_pass/pt_trace_pass.frag.glsl @@ -5,7 +5,7 @@ precision mediump float; #endif in vec3 initialRay; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; uniform vec3 eye; //uniform float textureWeight; uniform float timeSinceStart; @@ -192,6 +192,6 @@ time += 0.35; //} - outColor = vec4(vec3(col / samples), 1.0); - outColor.rgb = pow(outColor.rgb * 0.7, vec3(1.0 / 2.2)); + fragColor = vec4(vec3(col / samples), 1.0); + fragColor.rgb = pow(fragColor.rgb * 0.7, vec3(1.0 / 2.2)); } diff --git a/raw/smaa_blend_weight/smaa_blend_weight.frag.glsl b/raw/smaa_blend_weight/smaa_blend_weight.frag.glsl index cdc956d8..2e652f2e 100644 --- a/raw/smaa_blend_weight/smaa_blend_weight.frag.glsl +++ b/raw/smaa_blend_weight/smaa_blend_weight.frag.glsl @@ -37,7 +37,7 @@ in vec2 pixcoord; in vec4 offset0; in vec4 offset1; in vec4 offset2; -out vec4 outColor; +out vec4 fragColor; // Blending Weight Calculation Pixel Shader (Second Pass) vec2 cdw_end; @@ -727,6 +727,6 @@ vec4 SMAABlendingWeightCalculationPS(vec2 texcoord, vec2 pixcoord, /*vec4 offset } void main() { - outColor = SMAABlendingWeightCalculationPS(texCoord, pixcoord, /*offset,*/ + fragColor = SMAABlendingWeightCalculationPS(texCoord, pixcoord, /*offset,*/ /*edgesTex, areaTex, searchTex,*/ vec4(0.0)); } diff --git a/raw/smaa_edge_detect/smaa_edge_detect.frag.glsl b/raw/smaa_edge_detect/smaa_edge_detect.frag.glsl index c696d0ec..4461b66c 100644 --- a/raw/smaa_edge_detect/smaa_edge_detect.frag.glsl +++ b/raw/smaa_edge_detect/smaa_edge_detect.frag.glsl @@ -56,7 +56,7 @@ in vec2 texCoord; in vec4 offset0; in vec4 offset1; in vec4 offset2; -out vec4 outColor; +out vec4 fragColor; // Misc functions // Gathers current pixel, and the top-left neighbors. @@ -208,6 +208,6 @@ vec2 SMAAColorEdgeDetectionPS(vec2 texcoord/*, vec4 offset[3], sampler2D colorTe // } void main() { - // outColor.rg = SMAALumaEdgeDetectionPS(texCoord/*, offset, colorTex*/); - outColor.rg = SMAAColorEdgeDetectionPS(texCoord/*, offset, colorTex*/); + // fragColor.rg = SMAALumaEdgeDetectionPS(texCoord/*, offset, colorTex*/); + fragColor.rg = SMAAColorEdgeDetectionPS(texCoord/*, offset, colorTex*/); } diff --git a/raw/smaa_neighborhood_blend/smaa_neighborhood_blend.frag.glsl b/raw/smaa_neighborhood_blend/smaa_neighborhood_blend.frag.glsl index e0fc3054..406d9baf 100644 --- a/raw/smaa_neighborhood_blend/smaa_neighborhood_blend.frag.glsl +++ b/raw/smaa_neighborhood_blend/smaa_neighborhood_blend.frag.glsl @@ -14,7 +14,7 @@ uniform vec2 screenSizeInv; in vec2 texCoord; in vec4 offset; -out vec4 outColor; +out vec4 fragColor; //----------------------------------------------------------------------------- // Neighborhood Blending Pixel Shader (Third Pass) @@ -97,5 +97,5 @@ vec4 SMAANeighborhoodBlendingPS(vec2 texcoord, vec4 offset/*, sampler2D colorTex } void main() { - outColor = SMAANeighborhoodBlendingPS(texCoord, offset/*, colorTex, blendTex*/); + fragColor = SMAANeighborhoodBlendingPS(texCoord, offset/*, colorTex, blendTex*/); } diff --git a/raw/ssao_pass/ssao_pass.frag.glsl b/raw/ssao_pass/ssao_pass.frag.glsl index 7c25419a..66d71984 100644 --- a/raw/ssao_pass/ssao_pass.frag.glsl +++ b/raw/ssao_pass/ssao_pass.frag.glsl @@ -36,7 +36,7 @@ uniform vec2 aspectRatio; in vec2 texCoord; // in vec3 viewRay; -out vec4 outColor; +out vec4 fragColor; // float rand(vec2 co) { // Unreliable // return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453); @@ -82,7 +82,7 @@ float doAO(vec2 kernelVec, vec2 randomVec, mat2 rotMat, vec3 currentPos, vec3 cu void main() { float depth = texture(gbufferD, texCoord).r * 2.0 - 1.0; if (depth == 1.0) { - outColor = vec4(1.0); + fragColor = vec4(1.0); return; } @@ -160,5 +160,5 @@ void main() { amount *= ssaoStrength / kernelSize; amount = 1.0 - amount; amount = max(0.0, amount); - outColor = vec4(amount, 0.0, 0.0, 1.0); + fragColor = vec4(amount, 0.0, 0.0, 1.0); } diff --git a/raw/ssao_reproject_pass/ssao_reproject_pass.frag.glsl b/raw/ssao_reproject_pass/ssao_reproject_pass.frag.glsl index 64262742..a74ec4b0 100644 --- a/raw/ssao_reproject_pass/ssao_reproject_pass.frag.glsl +++ b/raw/ssao_reproject_pass/ssao_reproject_pass.frag.glsl @@ -38,7 +38,7 @@ uniform vec2 aspectRatio; in vec2 texCoord; in vec3 viewRay; -out vec4 outColor; +out vec4 fragColor; // float rand(vec2 co) { // Unreliable // return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453); @@ -84,7 +84,7 @@ float doAO(vec2 kernelVec, vec2 randomVec, mat2 rotMat, vec3 currentPos, vec3 cu void main() { float depth = texture(gbufferD, texCoord).r * 2.0 - 1.0; if (depth == 1.0) { - outColor = vec4(1.0); + fragColor = vec4(1.0); return; } @@ -162,10 +162,10 @@ void main() { amount *= ssaoStrength / kernelSize; amount = 1.0 - amount; amount = max(0.0, amount); - // outColor = vec4(amount, 0.0, 0.0, 1.0); + // fragColor = vec4(amount, 0.0, 0.0, 1.0); // Velocity is assumed to be calculated for motion blur, so we need to inverse it for reprojection vec2 velocity = -textureLod(sveloc, texCoord, 0.0).rg; float last = texture(slast, texCoord + velocity).r; - outColor = vec4((amount + last) * 0.5, 0.0, 0.0, 1.0); + fragColor = vec4((amount + last) * 0.5, 0.0, 0.0, 1.0); } diff --git a/raw/ssdo_pass/ssdo_pass.frag.glsl b/raw/ssdo_pass/ssdo_pass.frag.glsl index aed8ae1c..f98bb433 100644 --- a/raw/ssdo_pass/ssdo_pass.frag.glsl +++ b/raw/ssdo_pass/ssdo_pass.frag.glsl @@ -27,7 +27,7 @@ const vec3 sh2_weight_l1 = vec3(fudge_factor_l1 * 0.48860); //0.5*sqrt(3.0/pi); const vec4 sh2_weight = vec4(sh2_weight_l1, sh2_weight_l0) / num_samples; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; 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)); @@ -65,7 +65,7 @@ void main() { float depth = texture(gbufferD, texCoord).r * 2.0 - 1.0; // if (depth == 0.0) { if (depth == 1.0) { - outColor = vec4(1.0); + fragColor = vec4(1.0); return; } @@ -161,5 +161,5 @@ void main() { occlusion_sh2 += doDO(points[31], noise, radius, center_pos, max_distance_inv, center_normal); // } - outColor = vec4(vec3(1.0 - occlusion_sh2.rgb), 1.0); + fragColor = vec4(vec3(1.0 - occlusion_sh2.rgb), 1.0); } diff --git a/raw/ssr_pass/ssr_pass.frag.glsl b/raw/ssr_pass/ssr_pass.frag.glsl index 612d02da..bdc826e5 100644 --- a/raw/ssr_pass/ssr_pass.frag.glsl +++ b/raw/ssr_pass/ssr_pass.frag.glsl @@ -22,7 +22,7 @@ uniform mat4 tiV; in vec3 viewRay; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; vec3 hitCoord; float depth; @@ -190,14 +190,14 @@ void main() { float roughness = unpackFloat(g0.b).y; if (roughness == 1.0) { - outColor = vec4(0.0); + fragColor = vec4(0.0); return; } float reflectivity = 1.0 - roughness; float d = texture(gbufferD, texCoord).r * 2.0 - 1.0; if (d == 1.0) { - outColor = vec4(0.0); + fragColor = vec4(0.0); return; } @@ -209,8 +209,8 @@ void main() { vec4 viewNormal = vec4(n, 1.0); // if (viewNormal.z <= 0.9) { - // outColor = texture(tex, texCoord); - // outColor = vec4(0.0); + // fragColor = texture(tex, texCoord); + // fragColor = vec4(0.0); // return; // discard; // Only up facing surfaces for now // } @@ -236,12 +236,12 @@ void main() { intensity = clamp(intensity, 0.0, 1.0); if (intensity == 0.0) { - outColor = vec4(0.0); + fragColor = vec4(0.0); return; } vec4 reflCol = vec4(texture(tex, coords.xy).rgb, 1.0); reflCol = clamp(reflCol, 0.0, 1.0); - // outColor = texColor * (1.0 - intensity) + reflCol * intensity; - outColor = reflCol * intensity; // + // fragColor = texColor * (1.0 - intensity) + reflCol * intensity; + fragColor = reflCol * intensity; // } diff --git a/raw/sss_pass/sss_pass.frag.glsl b/raw/sss_pass/sss_pass.frag.glsl index eaee318b..1cb261e9 100644 --- a/raw/sss_pass/sss_pass.frag.glsl +++ b/raw/sss_pass/sss_pass.frag.glsl @@ -50,7 +50,7 @@ uniform sampler2D tex; uniform vec2 dir; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; const float SSSS_FOVY = 45.0; @@ -157,9 +157,9 @@ vec4 SSSSBlur(float sssWidth) { void main() { // SSS only masked objects if (texture(gbuffer0, texCoord).a == 2.0) { - outColor = SSSSBlur(0.005); + fragColor = SSSSBlur(0.005); } else { - outColor = texture(tex, texCoord); + fragColor = texture(tex, texCoord); } } diff --git a/raw/taa_pass/taa_pass.frag.glsl b/raw/taa_pass/taa_pass.frag.glsl index 94cb44dd..fb403836 100644 --- a/raw/taa_pass/taa_pass.frag.glsl +++ b/raw/taa_pass/taa_pass.frag.glsl @@ -11,7 +11,7 @@ uniform sampler2D sveloc; #endif in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; const float SMAA_REPROJECTION_WEIGHT_SCALE = 30.0; @@ -34,9 +34,9 @@ void main() { float weight = 0.5 * clamp(1.0 - sqrt(delta) * SMAA_REPROJECTION_WEIGHT_SCALE, 0.0, 1.0); // Blend the pixels according to the calculated weight: - outColor.rgb = mix(current.rgb, previous.rgb, weight); + fragColor.rgb = mix(current.rgb, previous.rgb, weight); #else vec4 previous = texture(tex2, texCoord); - outColor = mix(current.rgb, previous.rgb, 0.5); + fragColor = mix(current.rgb, previous.rgb, 0.5); #endif } diff --git a/raw/translucent_resolve/translucent_resolve.frag.glsl b/raw/translucent_resolve/translucent_resolve.frag.glsl index accad4ee..3244d519 100644 --- a/raw/translucent_resolve/translucent_resolve.frag.glsl +++ b/raw/translucent_resolve/translucent_resolve.frag.glsl @@ -10,7 +10,7 @@ uniform sampler2D gbuffer0; // saccum uniform sampler2D gbuffer1; // srevealage in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; void main() { vec4 accum = texture(gbuffer0, texCoord); @@ -24,8 +24,8 @@ void main() { float accumA = texture(gbuffer1, texCoord).r; // accum.a = texture(gbuffer1, texCoord).r; - // outColor = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), revealage); + // fragColor = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), revealage); const float epsilon = 0.00001; - outColor = vec4(accum.rgb / max(accumA, epsilon), 1.0 - revealage); + fragColor = vec4(accum.rgb / max(accumA, epsilon), 1.0 - revealage); } diff --git a/raw/volumetric_light/volumetric_light.frag.glsl b/raw/volumetric_light/volumetric_light.frag.glsl index fa30b81e..da3d0aa0 100644 --- a/raw/volumetric_light/volumetric_light.frag.glsl +++ b/raw/volumetric_light/volumetric_light.frag.glsl @@ -24,7 +24,7 @@ uniform float lightStrength; uniform float shadowsBias; in vec4 wvpposition; -out vec4 outColor; +out vec4 fragColor; const float tScat = 0.08; const float tAbs = 0.0; @@ -192,6 +192,6 @@ void main() { // } // curOpticalDepth - outColor = vec4(scatteredLightAmount * lightColor.rgb * volumAirColor * volumAirTurbidity, 0.0); - // outColor = vec4(scatteredLightAmount * lightColor.rgb * ((1.0 - depth) * 10.0), 0.0); + fragColor = vec4(scatteredLightAmount * lightColor.rgb * volumAirColor * volumAirTurbidity, 0.0); + // fragColor = vec4(scatteredLightAmount * lightColor.rgb * ((1.0 - depth) * 10.0), 0.0); } diff --git a/raw/water_pass/water_initial_spectrum.frag.glsl b/raw/water_pass/water_initial_spectrum.frag.glsl index 8b3db2d1..4f84633a 100644 --- a/raw/water_pass/water_initial_spectrum.frag.glsl +++ b/raw/water_pass/water_initial_spectrum.frag.glsl @@ -6,7 +6,7 @@ precision mediump float; #endif in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; const float PI = 3.14159265359; const float G = 9.81; @@ -75,6 +75,6 @@ void main() { if (K.x == 0.0 && K.y == 0.0) { h = 0.0; //no DC term } - outColor = vec4(h, 0.0, 0.0, 0.0); + fragColor = vec4(h, 0.0, 0.0, 0.0); } \ No newline at end of file diff --git a/raw/water_pass/water_normals.frag.glsl b/raw/water_pass/water_normals.frag.glsl index a50c14b8..d53a92c8 100644 --- a/raw/water_pass/water_normals.frag.glsl +++ b/raw/water_pass/water_normals.frag.glsl @@ -6,7 +6,7 @@ precision mediump float; #endif in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; uniform sampler2D texDisplacement; const float resolution = 512.0; @@ -27,5 +27,5 @@ void main() { vec3 bottomLeft = cross(left, bottom); vec3 bottomRight = cross(bottom, right); - outColor = vec4(normalize(topRight + topLeft + bottomLeft + bottomRight), 1.0); + fragColor = vec4(normalize(topRight + topLeft + bottomLeft + bottomRight), 1.0); } diff --git a/raw/water_pass/water_pass.frag.glsl b/raw/water_pass/water_pass.frag.glsl index ec5008dd..02ab21ad 100644 --- a/raw/water_pass/water_pass.frag.glsl +++ b/raw/water_pass/water_pass.frag.glsl @@ -1,7 +1,6 @@ // Deferred water based on shader by Wojciech Toman // http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/rendering-water-as-a-post-process-effect-r2642 // Seascape https://www.shadertoy.com/view/Ms2SD1 -// Caustics https://www.shadertoy.com/view/4ljXWh // Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License #version 450 @@ -26,35 +25,7 @@ uniform float envmapStrength; in vec2 texCoord; in vec3 viewRay; in vec3 vecnormal; -out vec4 outColor; - -// const float seaLevel = 0.0; -// const float seaFade = 1.8; -// const float seaMaxAmplitude = 2.5; -// const float seaHeight = 0.6; -// const float seaChoppy = 4.0; -// const float seaSpeed = 1.0; -// const float seaFreq = 0.16; -// const vec3 seaBaseColor = vec3(0.1, 0.19, 0.37); -// const vec3 seaWaterColor = vec3(0.6, 0.7, 0.9); -const mat2 octavem = mat2(1.6, 1.2, -1.2, 1.6); -// const float fadeSpeed = 0.15; -// const vec3 sunColor = vec3(1.0, 1.0, 1.0); -// const float shoreHardness = 1.0; -// const vec3 foamExistence = vec3(0.65, 1.35, 0.5); -// const float shininess = 0.7; -// const vec3 depthColour = vec3(0.0078, 0.5176, 0.9); -// const vec3 bigDepthColour = vec3(0.0039, 0.00196, 0.345); -// const vec3 extinction = vec3(7.0, 30.0, 40.0); // Horizontal -// const float visibility = 2.0; -// const float refractionScale = 0.005; -// const vec2 wind = vec2(-0.3, 0.7); - -// vec2 envMapEquirect(vec3 normal) { - // float phi = acos(normal.z); - // float theta = atan(-normal.y, normal.x) + PI; - // return vec2(theta / PI2, phi / PI); -// } +out vec4 fragColor; float hash(vec2 p) { float h = dot(p, vec2(127.1, 311.7)); @@ -80,6 +51,7 @@ float sea_octave(vec2 uv, float choppy) { wv = mix(wv, swv, wv); return pow(1.0 - pow(wv.x * wv.y, 0.65), choppy); } +const mat2 octavem = mat2(1.6, 1.2, -1.2, 1.6); float map(vec3 p) { float freq = seaFreq; float amp = seaHeight; @@ -214,7 +186,7 @@ vec3 heightMapTracing(vec3 ori, vec3 dir) { tm = tmid; hm = hmid; } - } + // } return p; } vec3 getSkyColor(vec3 e) { @@ -255,92 +227,18 @@ vec3 getPos(float depth) { return wposition; } -// vec3 caustic(vec2 uv) { -// vec2 p = mod(uv * PI2, PI2) - 250.0; -// float loctime = time * 0.5 + 23.0; -// vec2 i = vec2(p); -// float c = 1.0; -// float inten = 0.005; -// // for (int n = 0; n < MAX_ITER; n++) { -// float t = loctime * (1.0 - (3.5 / float(0 + 1))); -// i = p + vec2(cos(t - i.x) + sin(t + i.y), sin(t - i.y) + cos(t + i.x)); -// c += 1.0 / length(vec2(p.x / (sin(i.x + t) / inten), p.y / (cos(i.y + t) / inten))); - -// t = loctime * (1.0 - (3.5 / float(1 + 1))); //0 + 1 -// i = p + vec2(cos(t - i.x) + sin(t + i.y), sin(t - i.y) + cos(t + i.x)); -// c += 1.0 / length(vec2(p.x / (sin(i.x + t) / inten), p.y / (cos(i.y + t) / inten))); - -// t = loctime * (1.0 - (3.5 / float(2 + 1))); -// i = p + vec2(cos(t - i.x) + sin(t + i.y), sin(t - i.y) + cos(t + i.x)); -// c += 1.0 / length(vec2(p.x / (sin(i.x + t) / inten), p.y / (cos(i.y + t) / inten))); - -// t = loctime * (1.0 - (3.5 / float(3 + 1))); -// i = p + vec2(cos(t - i.x) + sin(t + i.y), sin(t - i.y) + cos(t + i.x)); -// c += 1.0 / length(vec2(p.x / (sin(i.x + t) / inten), p.y / (cos(i.y + t) / inten))); -// // } - -// c /= 4.0; -// c = 1.17 - pow(c, 1.4); -// vec3 color = vec3(pow(abs(c), 8.0)); -// color = clamp(color + vec3(0.0, 0.35, 0.5), 0.0, 1.0); -// color = mix(color, vec3(1.0), 0.3); - -// return color; -// } -// float causticX(float x, float power, float gtime) { -// float p = mod(x * PI2, PI2) - 250.0; -// float time = gtime * 0.5 + 23.0; -// float i = p; -// float c = 1.0; -// float inten = 0.005; -// // for (int n = 0; n < MAX_ITER/2; n++) { -// float t = time * (1.0 - (3.5 / float(0+1))); -// i = p + cos(t - i) + sin(t + i); -// c += 1.0 / length(p / (sin(i + t) / inten)); - -// t = time * (1.0 - (3.5 / float(1+1))); -// i = p + cos(t - i) + sin(t + i); -// c += 1.0 / length(p / (sin(i + t) / inten)); -// // } -// c /= 4.0; -// c = 1.17 - pow(c, power); -// return c; -// } -// float godRays(vec2 uv) { -// float light = 0.0; -// light += pow(causticX((uv.x + 0.08 * uv.y) / 1.7 + 0.5, 1.8, time * 0.65), 10.0) * 0.05; -// light -= pow((1.0 - uv.y) * 0.3, 2.0) * 0.2; -// light += pow(causticX(sin(uv.x), 0.3, time * 0.7), 9.0) * 0.4; -// light += pow(causticX(cos(uv.x * 2.3), 0.3, time * 1.3), 4.0) * 0.1; -// light -= pow((1.0 - uv.y) * 0.3, 3.0); -// light = clamp(light, 0.0, 1.0); -// return light; -// } - void main() { float gdepth = texture(gbufferD, texCoord).r * 2.0 - 1.0; vec4 colorOriginal = texture(tex, texCoord); // if (gdepth == 1.0) { - // outColor = colorOriginal; + // fragColor = colorOriginal; // return; // } vec3 color = colorOriginal.rgb; vec3 position = getPos(gdepth); - // Underwater - // if (seaLevel >= eye.z) { - // float t = length(eye - position); - // // color *= caustic(vec2(mix(position.x,position.y,0.2),mix(position.z,position.y,0.2))*1.1); - // color = mix(colorOriginal.rgb, vec3(0.0, 0.05, 0.2), 1.0 - exp(-0.3 * pow(t, 1.0))); - // const float skyColor = 0.8; - // color += godRays(texCoord) * mix(skyColor, 1.0, texCoord.y * texCoord.y) * vec3(0.7, 1.0, 1.0); - // outColor = vec4(color, 1.0); - // // gl_FragData[0] = vec4(color, 1.0); - // return; - // } if (position.z <= seaLevel + seaMaxAmplitude) { - // vec3 ld = normalize(vec3(0.0, 0.8, 1.0)); const vec3 ld = normalize(vec3(0.3, -0.3, 1.0)); vec3 lightDir = light - position.xyz; vec3 eyeDir = eye - position.xyz; @@ -407,6 +305,6 @@ void main() { color = mix(color, colorOriginal.rgb, clamp((vecn.z + 0.03) * 10.0, 0.0, 1.0)); } - outColor.rgb = color; + fragColor.rgb = color; // gl_FragData[0].rgb = color; } diff --git a/raw/water_pass/water_phase.frag.glsl b/raw/water_pass/water_phase.frag.glsl index 0adcf0b7..40c0294d 100644 --- a/raw/water_pass/water_phase.frag.glsl +++ b/raw/water_pass/water_phase.frag.glsl @@ -10,7 +10,7 @@ const float G = 9.81; const float KM = 370.0; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; uniform sampler2D u_phases; uniform float u_deltaTime; @@ -32,5 +32,5 @@ void main() { float deltaPhase = omega(length(waveVector)) * u_deltaTime; phase = mod(phase + deltaPhase, 2.0 * PI); - outColor = vec4(phase, 0.0, 0.0, 0.0); + fragColor = vec4(phase, 0.0, 0.0, 0.0); } diff --git a/raw/water_pass/water_spectrum.frag.glsl b/raw/water_pass/water_spectrum.frag.glsl index 23c26751..89b91d8b 100644 --- a/raw/water_pass/water_spectrum.frag.glsl +++ b/raw/water_pass/water_spectrum.frag.glsl @@ -17,7 +17,7 @@ uniform sampler2D texPhases; uniform sampler2D texInitialSpectrum; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; vec2 multiplyComplex(vec2 a, vec2 b) { return vec2(a[0] * b[0] - a[1] * b[1], a[1] * b[0] + a[0] * b[1]); @@ -56,5 +56,5 @@ void main() { hZ = vec2(0.0); } - outColor = vec4(hX + multiplyByI(h), hZ); + fragColor = vec4(hX + multiplyByI(h), hZ); } diff --git a/raw/water_pass/water_subtransform.frag.glsl b/raw/water_pass/water_subtransform.frag.glsl index 01e4b798..1373c715 100644 --- a/raw/water_pass/water_subtransform.frag.glsl +++ b/raw/water_pass/water_subtransform.frag.glsl @@ -9,7 +9,7 @@ precision mediump float; uniform sampler2D texInput; in vec2 texCoord; -out vec4 outColor; +out vec4 fragColor; const float PI = 3.14159265359; const float transformSize = 512.0; @@ -45,5 +45,5 @@ void main() { vec2 outputA = even.xy + multiplyComplex(twiddle, odd.xy); vec2 outputB = even.zw + multiplyComplex(twiddle, odd.zw); - outColor = vec4(outputA, outputB); + fragColor = vec4(outputA, outputB); }