mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
update mbu shaders
This commit is contained in:
parent
3ea6926871
commit
d0dcb5f6c9
4 changed files with 37 additions and 2 deletions
|
|
@ -187,6 +187,8 @@ class DifBuilder {
|
|||
normalTex.mipMap = Nearest;
|
||||
var shader = new PhongMaterial(diffuseTex, normalTex, shininess, specularColor, MarbleGame.instance.world.ambient,
|
||||
MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, uvScaleFactor);
|
||||
if (uvScaleFactor == 0.5)
|
||||
shader.isHalfTile = true;
|
||||
onFinish(shader);
|
||||
});
|
||||
worker.loadFile('interiors_mbu/${baseTexture}');
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package src;
|
||||
|
||||
import shaders.Gamma;
|
||||
import collision.Collision;
|
||||
import shapes.MegaMarble;
|
||||
import shapes.Blast;
|
||||
|
|
@ -271,6 +272,9 @@ class MarbleWorld extends Scheduler {
|
|||
|
||||
var worker = new ResourceLoaderWorker(() -> {
|
||||
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) {
|
||||
if (element._type != MissionElementType.Sun)
|
||||
|
|
@ -280,6 +284,9 @@ class MarbleWorld extends Scheduler {
|
|||
|
||||
var directionalColor = MisParser.parseVector4(sunElement.color);
|
||||
var ambientColor = MisParser.parseVector4(sunElement.ambient);
|
||||
ambientColor.r *= 1.18;
|
||||
ambientColor.g *= 1.06;
|
||||
ambientColor.b *= 0.95;
|
||||
var sunDirection = MisParser.parseVector3(sunElement.direction);
|
||||
sunDirection.x = -sunDirection.x;
|
||||
// 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 dirLightDir:Vec3;
|
||||
@param var uvScaleFactor:Float;
|
||||
@const var isHalfTile:Bool = false;
|
||||
@global var camera:{
|
||||
var position: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.);
|
||||
}
|
||||
function lambert(normal:Vec3, lightPosition:Vec3):Float {
|
||||
var result = dot(normal, lightPosition);
|
||||
return saturate(result);
|
||||
var result = isHalfTile ? dot(normal, lightPosition) : ((dot(normal, lightPosition) + 1) * 0.5);
|
||||
return result;
|
||||
}
|
||||
function vertex() {
|
||||
calculatedUV = input.uv * uvScaleFactor;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue