@@ -152,7 +152,14 @@ void main()
152
152
vec3 v = normalize(-viewVertex.xyz); // normalized view vector
153
153
float nv = max(0.f, dot(n, v));
154
154
float roughness2 = pow(p3d_Material.roughness, 2);
155
- p3d_FragData = p3d_LightModel.ambient * p3d_Material.ambient;
155
+
156
+ #ifdef HAS_TEXTURE
157
+ vec4 baseColor = texture(p3d_Texture0, texcoords);
158
+ #else
159
+ vec4 baseColor = p3d_Material.baseColor;
160
+ #endif
161
+ //p3d_FragData = vec4(0.0, 0.0, 0.0, 1.f);
162
+ p3d_FragData = p3d_LightModel.ambient * baseColor;
156
163
157
164
158
165
for(int i = 0; i < p3d_LightSource.length(); ++i) {
@@ -170,21 +177,16 @@ void main()
170
177
171
178
vec3 FV = F(F0, vh);
172
179
vec3 kd = (1.f - p3d_Material.metallic) * (1.f - FV) * (1.f / M_PI);
173
- #ifdef HAS_TEXTURE
174
- vec4 diffuseColor = texture(p3d_Texture0, texcoords);
175
- #else
176
- vec4 diffuseColor = p3d_Material.baseColor;
177
- #endif
178
-
179
180
181
+ vec4 diffuseColor = baseColor;
180
182
181
183
#ifdef SPECULAR
182
184
vec3 specularColor = vec3(0.f, 0.f, 0.f);
183
185
if(nl > 0.f && nv > 0.f) {
184
186
float DV = D(roughness2, hn);
185
187
float GV = G(hn, nv, nl, vh);
186
188
vec3 rs = (DV * GV * FV) / (4.f * nl * nv);
187
- specularColor = rs * p3d_Material.baseColor.rgb ;
189
+ specularColor = rs * p3d_Material.specular ;
188
190
}
189
191
#else
190
192
vec3 specularColor = vec3(0.0, 0.0, 0.0);
@@ -205,6 +207,9 @@ std::string vpPanda3DRGBRenderer::makeFragmentShader(bool hasTexture, bool specu
205
207
if (specular) {
206
208
ss << " #define SPECULAR 1" << std::endl;
207
209
}
210
+ else {
211
+ ss << " #undef SPECULAR" << std::endl;
212
+ }
208
213
ss << vpPanda3DRGBRenderer::COOK_TORRANCE_FRAG;
209
214
std::cout << ss.str () << std::endl;
210
215
return ss.str ();
@@ -214,9 +219,10 @@ void vpPanda3DRGBRenderer::addNodeToScene(const NodePath &object)
214
219
{
215
220
NodePath objectInScene = object.copy_to (m_renderRoot);
216
221
objectInScene.set_name (object.get_name ());
222
+ std::cout << " SHOW SPECULARS = " << m_showSpeculars << std::endl;
217
223
PT (Shader) shader = Shader::make (Shader::ShaderLanguage::SL_GLSL,
218
224
COOK_TORRANCE_VERT,
219
- makeFragmentShader (false , m_showSpeculars));
225
+ makeFragmentShader (true , m_showSpeculars));
220
226
221
227
objectInScene.set_shader (shader);
222
228
@@ -277,6 +283,7 @@ void vpPanda3DRGBRenderer::setupRenderTarget()
277
283
m_colorBuffer->set_inverted (gsg->get_copy_texture_inverted ());
278
284
m_colorTexture = new Texture ();
279
285
fbp.setup_color_texture (m_colorTexture);
286
+ // m_colorTexture->set_format(Texture::Format::F_srgb_alpha);
280
287
m_colorBuffer->add_render_texture (m_colorTexture, GraphicsOutput::RenderTextureMode::RTM_copy_ram);
281
288
m_colorBuffer->set_clear_color (LColor (0 .f ));
282
289
m_colorBuffer->set_clear_color_active (true );
0 commit comments