#pragma once #include "dvc_config.h" #include "shader/dvc_shader_interface.h" class ClassicFragementShader_Phong : public davinci::FragementShaderInterface { public: virtual const char* getName(void) const; virtual bool begin(const davinci::RenderPipe* pipe, davinci::MaterialConstPtr material, const davinci::VertexDesc& veretexDesc) override; virtual void process(const float32_t* pixelData, davinci::fVector4& color) override; virtual void end() override; private: const davinci::RenderPipe* m_pipe = nullptr; davinci::fVector4 m_materialColor = davinci::fVector4::WHITE; float32_t m_specularShininess = 64.0f; float32_t m_specularStrength = 5.0f; davinci::fVector3 m_ambientLightColor = davinci::fVector3(0.2f, 0.2f, 0.2f); davinci::fVector3 m_light0Position; davinci::fVector3 m_light0Color; davinci::fVector3 m_cameraPosition; size_t m_vWorldPosOffset; size_t m_vNormalOffset; };