Skip to content

Commit 49a9507

Browse files
committed
Added new overrides
1 parent fd4fd9d commit 49a9507

File tree

1 file changed

+39
-21
lines changed

1 file changed

+39
-21
lines changed

include/nbl/builtin/shader/loader/mtl/fragment_impl.glsl

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,30 @@ layout (location = 0) out vec4 OutColor;
2828

2929
#include <nbl/builtin/glsl/bxdf/common.glsl> // change to bxdf/common.glsl
3030

31-
#ifndef _NBL_FRAG_PUSH_CONSTANTS_DEFINED_
32-
#define _NBL_FRAG_PUSH_CONSTANTS_DEFINED_
31+
#ifndef _NBL_FRAG_MATERIAL_PARAMETERS_STRUCT_DEFINED_
32+
#define _NBL_FRAG_MATERIAL_PARAMETERS_STRUCT_DEFINED_
3333

3434
#include <nbl/builtin/glsl/loader/mtl/common.glsl>
35+
#define nbl_glsl_MaterialParametersStruct nbl_glsl_MTLMaterialParameters
36+
#endif //_NBL_FRAG_MATERIAL_PARAMETERS_STRUCT_DEFINED_
37+
38+
#ifndef _NBL_FRAG_PUSH_CONSTANTS_DEFINED_
39+
#define _NBL_FRAG_PUSH_CONSTANTS_DEFINED_
3540

3641
layout (push_constant) uniform Block {
37-
nbl_glsl_MTLMaterialParameters params;
42+
nbl_glsl_MaterialParametersStruct params;
3843
} PC;
3944
#endif //_NBL_FRAG_PUSH_CONSTANTS_DEFINED_
4045

46+
#ifndef _NBL_FRAG_GET_MATERIAL_PARAMETERS_FUNCTION_DEFINED_
47+
#define _NBL_FRAG_GET_MATERIAL_PARAMETERS_FUNCTION_DEFINED_
48+
49+
nbl_glsl_MaterialParametersStruct nbl_glsl_getMaterialParameters()
50+
{
51+
return PC.params;
52+
}
53+
#endif //_NBL_FRAG_RETRIVE_MATERIAL_PARAMETERS_FUNCTION_DEFINED_
54+
4155
#if !defined(_NBL_FRAG_SET3_BINDINGS_DEFINED_) && !defined(_NO_UV)
4256
#define _NBL_FRAG_SET3_BINDINGS_DEFINED_
4357
layout (set = 3, binding = 0) uniform sampler2D map_Ka;
@@ -85,39 +99,41 @@ vec4 nbl_sample_bump(in vec2 uv, in mat2 dUV) { return texture(map_bump, uv); }
8599
// params can be either BSDFIsotropicParams or BSDFAnisotropicParams
86100
Spectrum nbl_bsdf_cos_eval(in nbl_glsl_LightSample _sample, in nbl_glsl_IsotropicViewSurfaceInteraction inter, in mat2 dUV)
87101
{
102+
nbl_glsl_MaterialParametersStruct mtParams = nbl_glsl_getMaterialParameters();
103+
88104
vec3 Kd;
89105
#ifndef _NO_UV
90-
if ((PC.params.extra&(map_Kd_MASK)) == (map_Kd_MASK))
106+
if ((mtParams.extra&(map_Kd_MASK)) == (map_Kd_MASK))
91107
Kd = nbl_sample_Kd(UV, dUV).rgb;
92108
else
93109
#endif
94-
Kd = PC.params.Kd;
110+
Kd = mtParams.Kd;
95111

96112
vec3 color = vec3(0.0);
97113
vec3 Ks;
98114
float Ns;
99115

100116
#ifndef _NO_UV
101-
if ((PC.params.extra&(map_Ks_MASK)) == (map_Ks_MASK))
117+
if ((mtParams.extra&(map_Ks_MASK)) == (map_Ks_MASK))
102118
Ks = nbl_sample_Ks(UV, dUV).rgb;
103119
else
104120
#endif
105-
Ks = PC.params.Ks;
121+
Ks = mtParams.Ks;
106122
#ifndef _NO_UV
107-
if ((PC.params.extra&(map_Ns_MASK)) == (map_Ns_MASK))
123+
if ((mtParams.extra&(map_Ns_MASK)) == (map_Ns_MASK))
108124
Ns = nbl_sample_Ns(UV, dUV).x;
109125
else
110126
#endif
111-
Ns = PC.params.Ns;
127+
Ns = mtParams.Ns;
112128

113-
vec3 Ni = vec3(PC.params.Ni);
129+
vec3 Ni = vec3(mtParams.Ni);
114130

115131

116132
vec3 diff = nbl_glsl_lambertian_cos_eval(_sample) * Kd * (1.0-nbl_glsl_fresnel_dielectric(Ni,_sample.NdotL)) * (1.0-nbl_glsl_fresnel_dielectric(Ni,inter.NdotV));
117133
diff *= nbl_glsl_diffuseFresnelCorrectionFactor(Ni, Ni*Ni);
118134

119135
nbl_glsl_IsotropicMicrofacetCache _cache = nbl_glsl_calcIsotropicMicrofacetCache(inter,_sample);
120-
switch (PC.params.extra&ILLUM_MODEL_MASK)
136+
switch (mtParams.extra&ILLUM_MODEL_MASK)
121137
{
122138
case 0:
123139
color = vec3(0.0);
@@ -160,9 +176,10 @@ Spectrum nbl_bsdf_cos_eval(in nbl_glsl_LightSample _sample, in nbl_glsl_Isotropi
160176
vec3 nbl_computeLighting(out nbl_glsl_IsotropicViewSurfaceInteraction out_interaction, in mat2 dUV)
161177
{
162178
nbl_glsl_IsotropicViewSurfaceInteraction interaction = nbl_glsl_calcSurfaceInteraction(vec3(0.0), ViewPos, Normal, mat2x3(dFdx(ViewPos),dFdy(ViewPos)));
179+
nbl_glsl_MaterialParametersStruct mtParams = nbl_glsl_getMaterialParameters();
163180

164181
#ifndef _NO_UV
165-
if ((PC.params.extra&map_bump_MASK) == map_bump_MASK)
182+
if ((mtParams.extra&map_bump_MASK) == map_bump_MASK)
166183
{
167184
interaction.N = normalize(interaction.N);
168185

@@ -177,27 +194,27 @@ vec3 nbl_computeLighting(out nbl_glsl_IsotropicViewSurfaceInteraction out_intera
177194
nbl_glsl_LightSample _sample = nbl_glsl_createLightSample(L*invLenL, interaction);
178195

179196
vec3 Ka;
180-
switch ((PC.params.extra&ILLUM_MODEL_MASK))
197+
switch ((mtParams.extra&ILLUM_MODEL_MASK))
181198
{
182199
case 0:
183200
{
184201
#ifndef _NO_UV
185-
if ((PC.params.extra&(map_Kd_MASK)) == (map_Kd_MASK))
202+
if ((mtParams.extra&(map_Kd_MASK)) == (map_Kd_MASK))
186203
Ka = nbl_sample_bump(UV, dUV).rgb;
187204
else
188205
#endif
189-
Ka = PC.params.Kd;
206+
Ka = mtParams.Kd;
190207
}
191208
break;
192209
default:
193210
#define Ia 0.1
194211
{
195212
#ifndef _NO_UV
196-
if ((PC.params.extra&(map_Ka_MASK)) == (map_Ka_MASK))
213+
if ((mtParams.extra&(map_Ka_MASK)) == (map_Ka_MASK))
197214
Ka = nbl_sample_Ka(UV, dUV).rgb;
198215
else
199216
#endif
200-
Ka = PC.params.Ka;
217+
Ka = mtParams.Ka;
201218
Ka *= Ia;
202219
}
203220
#undef Ia
@@ -222,26 +239,27 @@ void main()
222239
#else
223240
mat2 dUV = mat2(vec2(0,0),vec2(0,0));
224241
#endif
242+
nbl_glsl_MaterialParametersStruct mtParams = nbl_glsl_getMaterialParameters();
225243
nbl_glsl_IsotropicViewSurfaceInteraction interaction;
226244
vec3 color = nbl_computeLighting(interaction, dUV);
227245

228-
float d = PC.params.d;
246+
float d = mtParams.d;
229247

230248
//another illum model switch, required for illum=4,6,7,9 to compute alpha from fresnel (taken from opacity map or constant otherwise)
231-
switch (PC.params.extra&ILLUM_MODEL_MASK)
249+
switch (mtParams.extra&ILLUM_MODEL_MASK)
232250
{
233251
case 4:
234252
case 6:
235253
case 7:
236254
case 9:
237255
{
238256
float VdotN = dot(interaction.N, interaction.V.dir);
239-
d = nbl_glsl_fresnel_dielectric(vec3(PC.params.Ni), VdotN).x;
257+
d = nbl_glsl_fresnel_dielectric(vec3(mtParams.Ni), VdotN).x;
240258
}
241259
break;
242260
default:
243261
#ifndef _NO_UV
244-
if ((PC.params.extra&(map_d_MASK)) == (map_d_MASK))
262+
if ((mtParams.extra&(map_d_MASK)) == (map_d_MASK))
245263
{
246264
d = nbl_sample_d(UV, dUV).r;
247265
color *= d;

0 commit comments

Comments
 (0)