diff --git a/data/interiors_mbu/beam.jpg b/data/interiors_mbu/beam.jpg deleted file mode 100644 index d1e4cb79..00000000 Binary files a/data/interiors_mbu/beam.jpg and /dev/null differ diff --git a/data/interiors_mbu/beam_side.jpg b/data/interiors_mbu/beam_side.jpg deleted file mode 100644 index 6eebf119..00000000 Binary files a/data/interiors_mbu/beam_side.jpg and /dev/null differ diff --git a/data/interiors_mbu/edge_white.jpg b/data/interiors_mbu/edge_white.jpg deleted file mode 100644 index d0a91c59..00000000 Binary files a/data/interiors_mbu/edge_white.jpg and /dev/null differ diff --git a/data/interiors_mbu/edge_white_shadow.jpg b/data/interiors_mbu/edge_white_shadow.jpg deleted file mode 100644 index e4378356..00000000 Binary files a/data/interiors_mbu/edge_white_shadow.jpg and /dev/null differ diff --git a/data/interiors_mbu/friction_high.jpg b/data/interiors_mbu/friction_high.jpg deleted file mode 100644 index a016bfb4..00000000 Binary files a/data/interiors_mbu/friction_high.jpg and /dev/null differ diff --git a/data/interiors_mbu/friction_high_shadow.jpg b/data/interiors_mbu/friction_high_shadow.jpg deleted file mode 100644 index 3024722d..00000000 Binary files a/data/interiors_mbu/friction_high_shadow.jpg and /dev/null differ diff --git a/data/interiors_mbu/friction_low.jpg b/data/interiors_mbu/friction_low.jpg deleted file mode 100644 index 8a45b9da..00000000 Binary files a/data/interiors_mbu/friction_low.jpg and /dev/null differ diff --git a/data/interiors_mbu/friction_low_shadow.jpg b/data/interiors_mbu/friction_low_shadow.jpg deleted file mode 100644 index ca154f48..00000000 Binary files a/data/interiors_mbu/friction_low_shadow.jpg and /dev/null differ diff --git a/data/interiors_mbu/plate.randomize.jpg b/data/interiors_mbu/plate.randomize.jpg deleted file mode 100644 index c0848e69..00000000 Binary files a/data/interiors_mbu/plate.randomize.jpg and /dev/null differ diff --git a/data/interiors_mbu/stripe_caution.jpg b/data/interiors_mbu/stripe_caution.jpg deleted file mode 100644 index 4825b781..00000000 Binary files a/data/interiors_mbu/stripe_caution.jpg and /dev/null differ diff --git a/data/interiors_mbu/tile_advanced.jpg b/data/interiors_mbu/tile_advanced.jpg deleted file mode 100644 index 45c7d476..00000000 Binary files a/data/interiors_mbu/tile_advanced.jpg and /dev/null differ diff --git a/data/interiors_mbu/tile_intermediate.jpg b/data/interiors_mbu/tile_intermediate.jpg deleted file mode 100644 index 7d2d641e..00000000 Binary files a/data/interiors_mbu/tile_intermediate.jpg and /dev/null differ diff --git a/data/interiors_mbu/tile_underside.jpg b/data/interiors_mbu/tile_underside.jpg deleted file mode 100644 index af52c034..00000000 Binary files a/data/interiors_mbu/tile_underside.jpg and /dev/null differ diff --git a/data/interiors_mbu/wall_beginner.jpg b/data/interiors_mbu/wall_beginner.jpg deleted file mode 100644 index daa1599e..00000000 Binary files a/data/interiors_mbu/wall_beginner.jpg and /dev/null differ diff --git a/data/missions_mbu/advanced/kingofthemountain_ultra.mis b/data/missions_mbu/advanced/kingofthemountain_ultra.mis index 25ffd188..fea19a47 100644 --- a/data/missions_mbu/advanced/kingofthemountain_ultra.mis +++ b/data/missions_mbu/advanced/kingofthemountain_ultra.mis @@ -48,7 +48,7 @@ new SimGroup(MissionGroup) { }; new Sun() { direction = "0.573201 0.275357 -0.771764"; - color = "1.000000 1.000000 0.900000 1.000000"; + color = "1.080000 1.030000 0.900000 1.000000"; ambient = "0.400000 0.400000 0.500000 1.000000"; shadowColor = "0.000000 0.000000 0.150000 0.350000"; }; diff --git a/data/missions_mbu/advanced/survival_ultra.mis b/data/missions_mbu/advanced/survival_ultra.mis index a6cb58e6..bd0ec905 100644 --- a/data/missions_mbu/advanced/survival_ultra.mis +++ b/data/missions_mbu/advanced/survival_ultra.mis @@ -46,8 +46,8 @@ new SimGroup(MissionGroup) { dataBlock = "wintry"; }; new Sun() { - color = "1 1 0.9 1"; - ambient = "0.4 0.4 0.5 1"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; direction = "0.573201 0.275357 -0.771764"; shadowColor = "0.000000 0.000000 0.150000 0.350000"; }; diff --git a/data/missions_mbu/beginner/levelone_ultra.mis b/data/missions_mbu/beginner/levelone_ultra.mis index b0c37e13..3a8ea19e 100644 --- a/data/missions_mbu/beginner/levelone_ultra.mis +++ b/data/missions_mbu/beginner/levelone_ultra.mis @@ -37,8 +37,8 @@ new SimGroup(MissionGroup) { windEffectPrecipitation = "0"; }; new Sun() { - color = "1 1 0.9 1"; - ambient = "0.4 0.4 0.5 1"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; direction = "0.573201 0.275357 -0.771764"; shadowColor = "0.000000 0.000000 0.150000 0.350000"; }; diff --git a/data/missions_mbu/intermediate/lesstravel_ultra.mis b/data/missions_mbu/intermediate/lesstravel_ultra.mis index 4ff8509f..bc2c3d5d 100644 --- a/data/missions_mbu/intermediate/lesstravel_ultra.mis +++ b/data/missions_mbu/intermediate/lesstravel_ultra.mis @@ -84,8 +84,8 @@ new SimGroup(MissionGroup) { dataBlock = "dusk"; }; new Sun() { - color = "1 1 0.9 1"; - ambient = "0.4 0.4 0.5 1"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; direction = "0.573201 0.275357 -0.771764"; shadowColor = "0.000000 0.000000 0.150000 0.350000"; }; diff --git a/data/missions_mbu/intermediate/treehouse_ultra.mis b/data/missions_mbu/intermediate/treehouse_ultra.mis index 47216327..31b9c56c 100644 --- a/data/missions_mbu/intermediate/treehouse_ultra.mis +++ b/data/missions_mbu/intermediate/treehouse_ultra.mis @@ -43,8 +43,8 @@ new SimGroup(MissionGroup) { windEffectPrecipitation = "0"; }; new Sun() { - color = "1 1 0.9 1"; - ambient = "0.4 0.4 0.5 1"; + color = "1.080000 1.030000 0.900000 1.000000"; + ambient = "0.400000 0.400000 0.500000 1.000000"; direction = "0.573201 0.275357 -0.771764"; shadowColor = "0.000000 0.000000 0.150000 0.350000"; }; diff --git a/data/shaders/tex/beam.normal.jpg b/data/shaders/tex/beam.normal.jpg deleted file mode 100644 index cd72a605..00000000 Binary files a/data/shaders/tex/beam.normal.jpg and /dev/null differ diff --git a/data/shaders/tex/beam.normal.png b/data/shaders/tex/beam.normal.png new file mode 100644 index 00000000..7350bbc2 Binary files /dev/null and b/data/shaders/tex/beam.normal.png differ diff --git a/data/shaders/tex/beam_side.normal.jpg b/data/shaders/tex/beam_side.normal.jpg deleted file mode 100644 index 2cfbcc94..00000000 Binary files a/data/shaders/tex/beam_side.normal.jpg and /dev/null differ diff --git a/data/shaders/tex/beam_side.normal.png b/data/shaders/tex/beam_side.normal.png new file mode 100644 index 00000000..5d4f6586 Binary files /dev/null and b/data/shaders/tex/beam_side.normal.png differ diff --git a/data/shaders/tex/edge.normal.jpg b/data/shaders/tex/edge.normal.jpg deleted file mode 100644 index 4edfcc04..00000000 Binary files a/data/shaders/tex/edge.normal.jpg and /dev/null differ diff --git a/data/shaders/tex/edge.normal.png b/data/shaders/tex/edge.normal.png new file mode 100644 index 00000000..99b29c69 Binary files /dev/null and b/data/shaders/tex/edge.normal.png differ diff --git a/data/shaders/tex/friction_high.normal.jpg b/data/shaders/tex/friction_high.normal.jpg deleted file mode 100644 index 0e9e9184..00000000 Binary files a/data/shaders/tex/friction_high.normal.jpg and /dev/null differ diff --git a/data/shaders/tex/friction_high.normal.png b/data/shaders/tex/friction_high.normal.png new file mode 100644 index 00000000..7c66edde Binary files /dev/null and b/data/shaders/tex/friction_high.normal.png differ diff --git a/data/shaders/tex/friction_low.normal.jpg b/data/shaders/tex/friction_low.normal.jpg deleted file mode 100644 index 97e48dcb..00000000 Binary files a/data/shaders/tex/friction_low.normal.jpg and /dev/null differ diff --git a/data/shaders/tex/friction_low.normal.png b/data/shaders/tex/friction_low.normal.png new file mode 100644 index 00000000..05ea4b91 Binary files /dev/null and b/data/shaders/tex/friction_low.normal.png differ diff --git a/data/shaders/tex/plate.normal.jpg b/data/shaders/tex/plate.normal.jpg deleted file mode 100644 index 4933ff4d..00000000 Binary files a/data/shaders/tex/plate.normal.jpg and /dev/null differ diff --git a/data/shaders/tex/plate.normal.png b/data/shaders/tex/plate.normal.png new file mode 100644 index 00000000..de01c8c1 Binary files /dev/null and b/data/shaders/tex/plate.normal.png differ diff --git a/data/shaders/tex/tile_mbu.normal.png b/data/shaders/tex/tile_mbu.normal.png index b3a15cdc..7c06465e 100644 Binary files a/data/shaders/tex/tile_mbu.normal.png and b/data/shaders/tex/tile_mbu.normal.png differ diff --git a/src/DifBuilder.hx b/src/DifBuilder.hx index ca07a3f5..830a9980 100644 --- a/src/DifBuilder.hx +++ b/src/DifBuilder.hx @@ -172,20 +172,18 @@ class DifBuilder { } ]; - static function createPhongMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, specTexture:String, normalTexture:String, shininess:Float, - specularIntensity:Float, secMapUVFactor:Float = 1) { + static function createPhongMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, normalTexture:String, shininess:Float, specularColor:Vector, + uvScaleFactor:Float = 1) { var worker = new ResourceLoaderWorker(() -> { var diffuseTex = ResourceLoader.getTexture('data/interiors_mbu/${baseTexture}').resource; - var specularTex = ResourceLoader.getTexture('data/shaders/tex/${specTexture}').resource; - specularTex.wrap = Repeat; + diffuseTex.wrap = Repeat; var normalTex = ResourceLoader.getTexture('data/shaders/tex/${normalTexture}').resource; normalTex.wrap = Repeat; - var shader = new PhongMaterial(diffuseTex, specularTex, normalTex, shininess, specularIntensity, MarbleGame.instance.world.ambient, - MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, secMapUVFactor); + var shader = new PhongMaterial(diffuseTex, normalTex, shininess, specularColor, MarbleGame.instance.world.ambient, + MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, uvScaleFactor); onFinish(shader); }); worker.loadFile('interiors_mbu/${baseTexture}'); - worker.loadFile('shaders/tex/${specTexture}'); worker.loadFile('shaders/tex/${normalTexture}'); worker.run(); } @@ -193,6 +191,7 @@ class DifBuilder { static function createNoiseTileMaterial(onFinish:hxsl.Shader->Void, baseTexture:String, noiseSuffix:String, shininess:Float, specular:Vector) { var worker = new ResourceLoaderWorker(() -> { var diffuseTex = ResourceLoader.getTexture('data/interiors_mbu/${baseTexture}').resource; + diffuseTex.wrap = Repeat; var normalTex = ResourceLoader.getTexture('data/shaders/tex/tile_mbu.normal.png').resource; normalTex.wrap = Repeat; var noiseTex = ResourceLoader.getTexture('data/shaders/tex/noise${noiseSuffix}.jpg').resource; @@ -223,53 +222,54 @@ class DifBuilder { } static var shaderMaterialDict:MapVoid)->Void> = [ - 'interiors_mbu/plate_1.jpg' => (onFinish) -> createPhongMaterial(onFinish, 'plate_1.jpg', 'plate_mbu.spec.jpg', 'plate_mbu.normal.png', 8, 1), + 'interiors_mbu/plate_1.jpg' => (onFinish) -> createPhongMaterial(onFinish, 'plate.randomize.png', 'plate.normal.png', 8, new Vector(1, 1, 0.8, 1), + 0.5), 'interiors_mbu/tile_beginner.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_beginner_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner_shadow.png', '', 40, + 'interiors_mbu/tile_beginner_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_beginner_red.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner_red.jpg', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_beginner_red_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner_red_shadow.png', '', 40, + 'interiors_mbu/tile_beginner_red.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_beginner_red_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_red_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_beginner_blue.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner_blue.jpg', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_beginner_blue_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner_blue_shadow.png', '', 40, + 'interiors_mbu/tile_beginner_blue.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_blue', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_beginner_blue_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_beginner.png', '_blue_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), 'interiors_mbu/tile_intermediate.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_intermediate_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate_shadow.png', '', 40, + 'interiors_mbu/tile_intermediate_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_intermediate_red.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate_red.jpg', '', 40, + 'interiors_mbu/tile_intermediate_red.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_red', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_intermediate_red_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate_red_shadow.png', '', 40, + 'interiors_mbu/tile_intermediate_red_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_red_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_intermediate_green.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate_green.jpg', '', 40, + 'interiors_mbu/tile_intermediate_green.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_green', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_intermediate_green_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate_green_shadow.png', '', 40, + 'interiors_mbu/tile_intermediate_green_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_intermediate.png', '_green_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), 'interiors_mbu/tile_advanced.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_advanced_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced_shadow.png', '', 40, + 'interiors_mbu/tile_advanced_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_advanced_blue.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced_blue.jpg', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_advanced_blue_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced_blue_shadow.png', '', 40, + 'interiors_mbu/tile_advanced_blue.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_blue', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_advanced_blue_shadow.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_blue_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_advanced_green.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced_green.jpg', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/tile_advanced_green_shadow.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced_green_shadow.png', '', 40, + 'interiors_mbu/tile_advanced_green.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/tile_advanced_green_shadow.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_advanced.png', '_green_shadow', 40, new Vector(0.2, 0.2, 0.2, 0.2)), - 'interiors_mbu/tile_underside.jpg' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_underside.jpg', '', 40, new Vector(1, 1, 1, 1)), - 'interiors_mbu/wall_beginner.png' => (onFinish) -> createPhongMaterial(onFinish, 'wall_beginner.png', 'wall_mbu.spec.png', 'wall_mbu.normal.png', 12, - 0.8), - 'interiors_mbu/edge_white.jpg' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white.jpg', 'edge_white_mbu.spec.jpg', - 'edge_white_mbu.normal.jpg', 50, 0.8), - 'interiors_mbu/edge_white_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white_shadow.png', 'edge_white_mbu.spec.jpg', - 'edge_white_mbu.normal.jpg', 50, 0.2), - 'interiors_mbu/beam.png' => (onFinish) -> createNormalMapMaterial(onFinish, 'beam.png', 'beam_side_mbu.normal.png'), - 'interiors_mbu/beam_side.png' => (onFinish) -> createNormalMapMaterial(onFinish, 'beam_side.png', 'beam_side_mbu.normal.png'), - 'interiors_mbu/friction_low.jpg' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low.jpg', 'friction_low_mbu.spec.png', - 'friction_low_mbu.normal.png', 128, 1), - 'interiors_mbu/friction_low_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low_shadow.png', 'friction_low_mbu.spec.png', - 'friction_low_mbu.normal.png', 128, 0.3), - 'interiors_mbu/friction_high.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_high.png', 'friction_high_mbu.spec.png', - 'friction_high_mbu.normal.png', 10, 0.3, 2), - 'interiors_mbu/friction_high_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_high_shadow.png', 'friction_high_mbu.spec.png', - 'friction_high_mbu.normal.png', 10, 0.15, 2) + 'interiors_mbu/tile_underside.png' => (onFinish) -> createNoiseTileMaterial(onFinish, 'tile_underside.png', '', 40, new Vector(1, 1, 1, 1)), + 'interiors_mbu/wall_beginner.png' => (onFinish) -> createPhongMaterial(onFinish, 'wall_beginner.png', 'wall_mbu.normal.png', 12, + new Vector(0.8, 0.8, 0.6, 1)), + 'interiors_mbu/edge_white.png' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white.png', 'edge.normal.png', 50, new Vector(0.8, 0.8, 0.8, 1)), + 'interiors_mbu/edge_white_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'edge_white_shadow.png', 'edge.normal.png', 50, + new Vector(0.2, 0.2, 0.2, 0.2)), + 'interiors_mbu/beam.png' => (onFinish) -> createPhongMaterial(onFinish, 'beam.png', 'beam.normal.png', 12, new Vector(0.8, 0.8, 0.6, 1)), + 'interiors_mbu/beam_side.png' => (onFinish) -> createPhongMaterial(onFinish, 'beam_side.png', 'beam_side.normal.png', 12, + new Vector(0.8, 0.8, 0.6, 1)), + 'interiors_mbu/friction_low.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low.png', 'friction_low.normal.png', 128, + new Vector(1, 1, 1, 0.8)), + 'interiors_mbu/friction_low_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_low_shadow.png', 'friction_low.normal.png', 128, + new Vector(0.3, 0.3, 0.35, 1)), + 'interiors_mbu/friction_high.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_high.png', 'friction_high.normal.png', 10, + new Vector(0.3, 0.3, 0.35, 1)), + 'interiors_mbu/friction_high_shadow.png' => (onFinish) -> createPhongMaterial(onFinish, 'friction_high_shadow.png', 'friction_high.normal.png', 10, + new Vector(0.15, 0.15, 0.16, 1.0)) ]; public static function loadDif(path:String, itr:InteriorObject, onFinish:Void->Void, ?so:Int = -1) { diff --git a/src/shaders/NoiseTileMaterial.hx b/src/shaders/NoiseTileMaterial.hx index 25368bff..bec4440f 100644 --- a/src/shaders/NoiseTileMaterial.hx +++ b/src/shaders/NoiseTileMaterial.hx @@ -77,12 +77,12 @@ class NoiseTileMaterial extends hxsl.Shader { var n = transformedNormal; var nf = unpackNormal(normalMap.get(calculatedUV * secondaryMapUvFactor)); var tanX = transformedTangent.xyz.normalize(); - var tanY = n.cross(tanX) * -transformedTangent.w; + var tanY = n.cross(tanX) * transformedTangent.w; transformedNormal = (nf.x * tanX + nf.y * tanY + nf.z * n).normalize(); var bumpDot = dirLight * lambert(transformedNormal, -dirLightDir); - outCol.xyz *= bumpDot * 0.8 + ambientLight; + outCol.xyz *= bumpDot + ambientLight; var r = reflect(dirLightDir, transformedNormal).normalize(); var specValue = saturate(r.dot((camera.position - transformedPosition).normalize())); diff --git a/src/shaders/PhongMaterial.hx b/src/shaders/PhongMaterial.hx index 9dc10cc1..ce0228fd 100644 --- a/src/shaders/PhongMaterial.hx +++ b/src/shaders/PhongMaterial.hx @@ -3,14 +3,13 @@ package shaders; class PhongMaterial extends hxsl.Shader { static var SRC = { @param var diffuseMap:Sampler2D; - @param var specularMap:Sampler2D; @param var normalMap:Sampler2D; @param var shininess:Float; - @param var specularIntensity:Float; + @param var specularColor:Vec4; @param var ambientLight:Vec3; @param var dirLight:Vec3; @param var dirLightDir:Vec3; - @param var secondaryMapUvFactor:Float; + @param var uvScaleFactor:Float; @global var camera:{ var position:Vec3; @var var dir:Vec3; @@ -36,50 +35,44 @@ class PhongMaterial extends hxsl.Shader { } function lambert(normal:Vec3, lightPosition:Vec3):Float { var result = dot(normal, lightPosition); - return max(result, 0.0); + return saturate(result); } function vertex() { - calculatedUV = input.uv; + calculatedUV = input.uv * uvScaleFactor; } function fragment() { // Diffuse part var diffuse = diffuseMap.get(calculatedUV); + var outCol = diffuse; - var incomingLight = vec3(0.0); - var specularLight = vec3(0.0); - - incomingLight += ambientLight; var n = transformedNormal; - var nf = unpackNormal(normalMap.get(calculatedUV * secondaryMapUvFactor)); + var nf = unpackNormal(normalMap.get(calculatedUV)); var tanX = transformedTangent.xyz.normalize(); - var tanY = n.cross(tanX) * -transformedTangent.w; + var tanY = n.cross(tanX) * transformedTangent.w; transformedNormal = (nf.x * tanX + nf.y * tanY + nf.z * n).normalize(); - var addedLight = dirLight * lambert(transformedNormal, -dirLightDir); - incomingLight += addedLight; + var bumpDot = dirLight * lambert(transformedNormal, -dirLightDir); + outCol.xyz *= bumpDot + ambientLight; var r = reflect(dirLightDir, transformedNormal).normalize(); - var specColor = specularMap.get(secondaryMapUvFactor * calculatedUV).r; - var specValue = r.dot((camera.position - transformedPosition).normalize()).max(0.); - specularLight += specColor * pow(specValue, shininess) * specularIntensity; + var specValue = saturate(r.dot((camera.position - transformedPosition).normalize())); + var specular = specularColor * pow(specValue, shininess); - var shaded = diffuse * vec4(incomingLight, 1); - shaded.rgb += specularLight; + outCol += specular * diffuse.a; - pixelColor = shaded; + pixelColor = outCol; } } - public function new(diffuse, specular, normal, shininess, specularIntensity, ambientLight, dirLight, dirLightDir, secondaryMapUvFactor) { + public function new(diffuse, normal, shininess, specularVal, ambientLight, dirLight, dirLightDir, uvScaleFactor) { super(); this.diffuseMap = diffuse; - this.specularMap = specular; this.normalMap = normal; this.shininess = shininess; - this.specularIntensity = specularIntensity; + this.specularColor = specularVal; this.ambientLight = ambientLight.clone(); this.dirLight = dirLight.clone(); this.dirLightDir = dirLightDir.clone(); - this.secondaryMapUvFactor = secondaryMapUvFactor; + this.uvScaleFactor = uvScaleFactor; } }