|
@@ -13,9 +13,11 @@ var filters = [Nearest, Linear];
|
|
enum abstract TexWrap(String) from String to String {
|
|
enum abstract TexWrap(String) from String to String {
|
|
var Clamp;
|
|
var Clamp;
|
|
var Repeat;
|
|
var Repeat;
|
|
|
|
+ var ClampX;
|
|
|
|
+ var ClampY;
|
|
}
|
|
}
|
|
|
|
|
|
-var wraps = [Clamp, Repeat];
|
|
|
|
|
|
+var wraps = [Clamp, Repeat, ClampX, ClampY];
|
|
|
|
|
|
@name("Sample Texture 2D")
|
|
@name("Sample Texture 2D")
|
|
@description("Get color from texture and UV")
|
|
@description("Get color from texture and UV")
|
|
@@ -34,14 +36,16 @@ class Sampler extends ShaderNodeHxsl {
|
|
@sgconst var wrap : Int;
|
|
@sgconst var wrap : Int;
|
|
@sgconst var filter : Int;
|
|
@sgconst var filter : Int;
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
function fragment() {
|
|
function fragment() {
|
|
var uv2 = uv;
|
|
var uv2 = uv;
|
|
- if (wrap == 0) {
|
|
|
|
- var size = texture.size();
|
|
|
|
|
|
+
|
|
|
|
+ var size = texture.size();
|
|
|
|
+ if (wrap == 0) // Clamp
|
|
uv2 = clamp(uv2, 0.5 / size, (size - vec2(0.5)) / size);
|
|
uv2 = clamp(uv2, 0.5 / size, (size - vec2(0.5)) / size);
|
|
- }
|
|
|
|
|
|
+ if (wrap == 2) // Clamp X
|
|
|
|
+ uv2.x = clamp(uv2.x, 0.5 / size.x, (size.x - 0.5) / size.x);
|
|
|
|
+ if (wrap == 3) // Clamp Y
|
|
|
|
+ uv2.y = clamp(uv2.y, 0.5 / size.y, (size.y - 0.5) / size.y);
|
|
|
|
|
|
if (filter == 0) {
|
|
if (filter == 0) {
|
|
var size = texture.size();
|
|
var size = texture.size();
|
|
@@ -54,7 +58,10 @@ class Sampler extends ShaderNodeHxsl {
|
|
override function getConstValue(name: String) : Null<Int> {
|
|
override function getConstValue(name: String) : Null<Int> {
|
|
switch (name) {
|
|
switch (name) {
|
|
case "wrap":
|
|
case "wrap":
|
|
- return wrap == Clamp ? 0 : 1;
|
|
|
|
|
|
+ if ( wrap == Clamp ) return 0;
|
|
|
|
+ if ( wrap == ClampX ) return 2;
|
|
|
|
+ if ( wrap == ClampY ) return 3;
|
|
|
|
+ return 1;
|
|
case "filter":
|
|
case "filter":
|
|
return filter == Nearest ? 0 : 1;
|
|
return filter == Nearest ? 0 : 1;
|
|
default:
|
|
default:
|