mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-04-27 05:01:38 +00:00
update mbu shaders
This commit is contained in:
parent
da8092bf3e
commit
1591ea7d72
4 changed files with 36 additions and 2 deletions
|
|
@ -187,6 +187,8 @@ class DifBuilder {
|
||||||
normalTex.mipMap = Nearest;
|
normalTex.mipMap = Nearest;
|
||||||
var shader = new PhongMaterial(diffuseTex, normalTex, shininess, specularColor, MarbleGame.instance.world.ambient,
|
var shader = new PhongMaterial(diffuseTex, normalTex, shininess, specularColor, MarbleGame.instance.world.ambient,
|
||||||
MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, uvScaleFactor);
|
MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, uvScaleFactor);
|
||||||
|
if (uvScaleFactor == 0.5)
|
||||||
|
shader.isHalfTile = true;
|
||||||
onFinish(shader);
|
onFinish(shader);
|
||||||
});
|
});
|
||||||
worker.loadFile('interiors_mbu/${baseTexture}');
|
worker.loadFile('interiors_mbu/${baseTexture}');
|
||||||
|
|
|
||||||
|
|
@ -272,6 +272,9 @@ class MarbleWorld extends Scheduler {
|
||||||
|
|
||||||
var worker = new ResourceLoaderWorker(() -> {
|
var worker = new ResourceLoaderWorker(() -> {
|
||||||
var renderer = cast(this.scene.renderer, h3d.scene.fwd.Renderer);
|
var renderer = cast(this.scene.renderer, h3d.scene.fwd.Renderer);
|
||||||
|
var gammaRes = ResourceLoader.getResource('data/shaders/gammaRamp.png', ResourceLoader.getTexture, this.textureResources);
|
||||||
|
gammaRes.wrap = Repeat;
|
||||||
|
// renderer.addShader(new Gamma(gammaRes, 1 / gammaRes.width));
|
||||||
|
|
||||||
for (element in mission.root.elements) {
|
for (element in mission.root.elements) {
|
||||||
if (element._type != MissionElementType.Sun)
|
if (element._type != MissionElementType.Sun)
|
||||||
|
|
@ -281,6 +284,9 @@ class MarbleWorld extends Scheduler {
|
||||||
|
|
||||||
var directionalColor = MisParser.parseVector4(sunElement.color);
|
var directionalColor = MisParser.parseVector4(sunElement.color);
|
||||||
var ambientColor = MisParser.parseVector4(sunElement.ambient);
|
var ambientColor = MisParser.parseVector4(sunElement.ambient);
|
||||||
|
ambientColor.r *= 1.18;
|
||||||
|
ambientColor.g *= 1.06;
|
||||||
|
ambientColor.b *= 0.95;
|
||||||
var sunDirection = MisParser.parseVector3(sunElement.direction);
|
var sunDirection = MisParser.parseVector3(sunElement.direction);
|
||||||
sunDirection.x = -sunDirection.x;
|
sunDirection.x = -sunDirection.x;
|
||||||
// sunDirection.z = -sunDirection.z;
|
// sunDirection.z = -sunDirection.z;
|
||||||
|
|
|
||||||
25
src/shaders/Gamma.hx
Normal file
25
src/shaders/Gamma.hx
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
package shaders;
|
||||||
|
|
||||||
|
class Gamma extends h3d.shader.ScreenShader {
|
||||||
|
static var SRC = {
|
||||||
|
@param var texture:Sampler2D;
|
||||||
|
@param var gammaMap:Sampler2D;
|
||||||
|
@param var gammaRampInvSize:Float;
|
||||||
|
function fragment() {
|
||||||
|
var c = texture.get(input.uv);
|
||||||
|
c = c * (1 - gammaRampInvSize) + 0.5 * gammaRampInvSize;
|
||||||
|
c.x = gammaMap.get(vec2(c.x, 0)).x;
|
||||||
|
c.y = gammaMap.get(vec2(c.y, 0)).x;
|
||||||
|
c.z = gammaMap.get(vec2(c.z, 0)).x;
|
||||||
|
c.a = 1;
|
||||||
|
|
||||||
|
output.color = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function new(gammaMap, gammaRampInvSize) {
|
||||||
|
super();
|
||||||
|
this.gammaMap = gammaMap;
|
||||||
|
this.gammaRampInvSize = gammaRampInvSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -10,6 +10,7 @@ class PhongMaterial extends hxsl.Shader {
|
||||||
@param var dirLight:Vec3;
|
@param var dirLight:Vec3;
|
||||||
@param var dirLightDir:Vec3;
|
@param var dirLightDir:Vec3;
|
||||||
@param var uvScaleFactor:Float;
|
@param var uvScaleFactor:Float;
|
||||||
|
@const var isHalfTile:Bool = false;
|
||||||
@global var camera:{
|
@global var camera:{
|
||||||
var position:Vec3;
|
var position:Vec3;
|
||||||
@var var dir:Vec3;
|
@var var dir:Vec3;
|
||||||
|
|
@ -35,8 +36,8 @@ class PhongMaterial extends hxsl.Shader {
|
||||||
transformedTangent = vec4(input.tangent * global.modelView.mat3(), input.tangent.dot(input.tangent) > 0.5 ? 1. : -1.);
|
transformedTangent = vec4(input.tangent * global.modelView.mat3(), input.tangent.dot(input.tangent) > 0.5 ? 1. : -1.);
|
||||||
}
|
}
|
||||||
function lambert(normal:Vec3, lightPosition:Vec3):Float {
|
function lambert(normal:Vec3, lightPosition:Vec3):Float {
|
||||||
var result = dot(normal, lightPosition);
|
var result = isHalfTile ? dot(normal, lightPosition) : ((dot(normal, lightPosition) + 1) * 0.5);
|
||||||
return saturate(result);
|
return result;
|
||||||
}
|
}
|
||||||
function vertex() {
|
function vertex() {
|
||||||
calculatedUV = input.uv * uvScaleFactor;
|
calculatedUV = input.uv * uvScaleFactor;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue