};
PbrMaterial::PbrMaterial():
- fresnel_lookup(get_or_create_fresnel_lookup())
+ fresnel_lookup(get_or_create_fresnel_lookup()),
+ fresnel_sampler(Resources::get_global().get<Sampler>("_linear_clamp.samp"))
{
set_base_color(0.8f);
set_metalness(0.0f);
{
Resources &resources = Resources::get_global();
- static const string name = "_pbr_fresnel_lookup.tex2d";
+ static const string name = "_pbr_fresnel_lookup.tex";
Texture2D *fresnel_lookup = resources.find<Texture2D>(name);
if(fresnel_lookup)
return *fresnel_lookup;
shdata.uniform("roughness", 0.0f);
const Mesh &mesh = resources.get<Mesh>("_fullscreen_quad.mesh");
- Framebuffer fresnel_lookup_fbo;
- fresnel_lookup_fbo.attach(COLOR_ATTACHMENT0, *fresnel_lookup);
- Bind bind_fbo(fresnel_lookup_fbo);
+ Framebuffer fresnel_lookup_fbo((COLOR_ATTACHMENT,RG8));
+ fresnel_lookup_fbo.attach(COLOR_ATTACHMENT, *fresnel_lookup);
Renderer renderer;
+ renderer.set_framebuffer(&fresnel_lookup_fbo);
renderer.set_shader_program(&shprog, &shdata);
mesh.draw(renderer);
spec_values["use_emission_map"] = (emission.texture!=0);
}
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-void PbrMaterial::attach_textures_to(Texturing &texturing, ProgramData &tex_shdata) const
-{
- attach_texture_to(base_color.texture, texturing, tex_shdata, "base_color_map");
- attach_texture_to(metalness.texture, texturing, tex_shdata, "metalness_map");
- attach_texture_to(roughness.texture, texturing, tex_shdata, "roughness_map");
- attach_texture_to(normal.texture, texturing, tex_shdata, "normal_map");
- attach_texture_to(occlusion.texture, texturing, tex_shdata, "occlusion_map");
- attach_texture_to(emission.texture, texturing, tex_shdata, "emission_map");
-}
-#pragma GCC diagnostic pop
-
const Texture *PbrMaterial::get_texture(Tag tag) const
{
if(tag==texture_tags[0])
return 0;
}
+const Sampler *PbrMaterial::get_sampler(Tag tag) const
+{
+ if(tag==texture_tags[6])
+ return &fresnel_sampler;
+ else
+ return sampler;
+}
+
void PbrMaterial::set_base_color(const Color &color)
{
base_color.value = color;
DataFile::Loader::ActionMap PbrMaterial::Loader::shared_actions;
-PbrMaterial::Loader::Loader(PbrMaterial &m):
- DerivedObjectLoader<PbrMaterial, Material::PropertyLoader<PbrMaterial> >(m)
-{
- set_actions(shared_actions);
-}
-
PbrMaterial::Loader::Loader(PbrMaterial &m, Collection &c):
DerivedObjectLoader<PbrMaterial, Material::PropertyLoader<PbrMaterial> >(m, c)
{