@@ -63,10 +63,6 @@ float nbl_glsl_VT_getVTexSzRcp()
6363#endif
6464#include <nbl/builtin/glsl/virtual_texturing/functions.glsl/7/8>
6565
66-
67- #define _NBL_FRAG_SET3_BINDINGS_DEFINED_
68- #define _NBL_FRAG_PUSH_CONSTANTS_DEFINED_
69-
7066vec4 nbl_sample_Ka(in vec2 uv, in mat2 dUV) { return nbl_glsl_vTextureGrad(gBatchInstance.map_Ka_data, uv, dUV); }
7167vec4 nbl_sample_Kd(in vec2 uv, in mat2 dUV) { return nbl_glsl_vTextureGrad(gBatchInstance.map_Kd_data, uv, dUV); }
7268vec4 nbl_sample_Ks(in vec2 uv, in mat2 dUV) { return nbl_glsl_vTextureGrad(gBatchInstance.map_Ks_data, uv, dUV); }
@@ -88,6 +84,27 @@ mat2 nbl_glsl_perturbNormal_dUVdSomething()
8884}
8985#define _NBL_BUILTIN_GLSL_BUMP_MAPPING_DERIVATIVES_DECLARED_
9086
87+ layout (push_constant) uniform Block
88+ {
89+ vec3 camPos;
90+ } pc;
91+ #define _NBL_FRAG_PUSH_CONSTANTS_DEFINED_
92+
93+ #define _NBL_FRAG_INPUTS_DEFINED_
94+ #define _NBL_FRAG_OUTPUTS_DEFINED_
95+ #define _NBL_FRAG_SET3_BINDINGS_DEFINED_
96+ #define _NBL_FRAG_MAIN_DEFINED_
97+ vec2 UV;
98+ mat2 dUVdScreen;
99+ mat2 nbl_glsl_dUVdScreen()
100+ {
101+ return dUVdScreen;
102+ }
103+ #define _NBL_FRAG_GET_UV_DERIVATIVES_FUNCTION_DEFINED_
104+ // weird globals for the overriden MTL fragment shader
105+ vec3 ViewPos;
106+ #include <nbl/builtin/shader/loader/mtl/fragment_impl.glsl>
107+
91108
92109#include <nbl/builtin/glsl/colorspace/OETF.glsl>
93110
@@ -123,8 +140,6 @@ void main()
123140 vertexIDs[i] = nbl_glsl_VG_fetchTriangleVertexIndex(baseTriangleVertex,i);
124141
125142 vec3 pos,normal;
126- vec2 uv;
127- mat2 dUVdScreen;
128143 {
129144 vec3 positions[3];
130145 vec2 uvs[3];
@@ -142,7 +157,7 @@ void main()
142157
143158 dUVdBary[0] = uvs[0]-uvs[2];
144159 dUVdBary[1] = uvs[1]-uvs[2];
145- uv = dUVdBary*bary+uvs[2];
160+ UV = dUVdBary*bary+uvs[2];
146161
147162 dUVdScreen = nbl_glsl_applyChainRule2D(dUVdBary,dBary);
148163
@@ -152,12 +167,13 @@ void main()
152167 normal = nbl_glsl_fetchVtxNormal(vertexIDs[0],drawGUID)*bary.x;
153168 normal += nbl_glsl_fetchVtxNormal(vertexIDs[1],drawGUID)*bary.y;
154169 normal += nbl_glsl_fetchVtxNormal(vertexIDs[2],drawGUID)*lastBary;
170+ normal = normalize(normal);
155171 }
156-
157- // deferred texturing
158- color.rgb = nbl_sample_Kd(uv,dUVdScreen).rgb;
159- // TODO: normals seem be to screwed
160- color.rgb = 0.5*normal+vec3(0.5 );
172+
173+ // the lighting is completely meh (note: we assume there's no modelspace to world transform)
174+ ViewPos = pos-pc.camPos; // weird global for MTL shader
175+ nbl_glsl_IsotropicViewSurfaceInteraction interaction = nbl_glsl_calcSurfaceInteraction(pc.camPos,pos,normal);
176+ color.rgb = nbl_computeLighting(interaction );
161177 }
162178
163179 imageStore(frameBuffer,fragCoord,vec4(nbl_glsl_oetf_sRGB(color.rgb),color.a));
0 commit comments