User Guide Cancel

Lib Alpha - Shader API | Substance 3D Painter

Lib Alpha - Shader API

lib-alpha.glsl

Public Functions: alphaKill

import lib-sampler.glsl
import lib-random.glsl
import lib-sampler.glsl import lib-random.glsl
import lib-sampler.glsl 
import lib-random.glsl

Opacity map, provided by the engine.

//: param auto channel_opacity
uniform SamplerSparse opacity_tex;
//: param auto channel_opacity uniform SamplerSparse opacity_tex;
//: param auto channel_opacity 
uniform SamplerSparse opacity_tex;

Alpha test threshold.

//: param custom {
//: "default": 0.33,
//: "label": "Alpha threshold",
//: "min": 0.0,
//: "max": 1.0,
//: "group": "Common Parameters"
//: }
uniform float alpha_threshold;
//: param custom { //: "default": 0.33, //: "label": "Alpha threshold", //: "min": 0.0, //: "max": 1.0, //: "group": "Common Parameters" //: } uniform float alpha_threshold;
//: param custom { 
//:   "default": 0.33, 
//:   "label": "Alpha threshold", 
//:   "min": 0.0, 
//:   "max": 1.0, 
//:   "group": "Common Parameters" 
//: } 
uniform float alpha_threshold;

Alpha test dithering.

//: param custom {
//: "default": false,
//: "label": "Alpha dithering",
//: "group": "Common Parameters"
//: }
uniform bool alpha_dither;
//: param custom { //: "default": false, //: "label": "Alpha dithering", //: "group": "Common Parameters" //: } uniform bool alpha_dither;
//: param custom { 
//:   "default": false, 
//:   "label": "Alpha dithering", 
//:   "group": "Common Parameters" 
//: } 
uniform bool alpha_dither;

Emulate alpha test : discard current fragment if its opacity is below a user defined threshold. Should be called AFTER texture sampling calls: it can break derivatives

void alphaKill(float alpha)
{
float threshold = alpha_dither ? getBlueNoiseThresholdTemporal() : alpha_threshold;
if (alpha < threshold) discard;
}
void alphaKill(SparseCoord coord)
{
alphaKill(getOpacity(opacity_tex, coord));
}
void alphaKill(float alpha) { float threshold = alpha_dither ? getBlueNoiseThresholdTemporal() : alpha_threshold; if (alpha < threshold) discard; } void alphaKill(SparseCoord coord) { alphaKill(getOpacity(opacity_tex, coord)); }
void alphaKill(float alpha) 
{ 
  float threshold = alpha_dither ? getBlueNoiseThresholdTemporal() : alpha_threshold; 
  if (alpha < threshold) discard; 
} 
 
void alphaKill(SparseCoord coord) 
{ 
  alphaKill(getOpacity(opacity_tex, coord)); 
} 
 

Get help faster and easier

New user?