can this phong shading program be implemented in pure python? thanks in advance struct Lighting {     float3 Diffuse;     float3 Specular; }; struct PointLight {    float3 position;    float3 diffuseColor;    float diffusePower;    float3 specularColor;    float specularPower; };

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Hi, can this phong shading program be implemented in pure python? thanks in advance

struct Lighting
{
    float3 Diffuse;
    float3 Specular;
};

struct PointLight
{
   float3 position;
   float3 diffuseColor;
   float diffusePower;
   float3 specularColor;
   float specularPower;
};

Lighting GetPointLight(PointLight light, float3 pos3D, float3 viewDir, float3 normal)
{
   Lighting OUT;
   if (light.diffusePower > 0)
   {
       float3 lightDir = light.position - pos3D; //3D position in space of the surface
       float distance = length(lightDir);
       lightDir = lightDir / distance; // = normalize(lightDir);
       distance = distance * distance; //This line may be optimised using Inverse square root

       //Intensity of the diffuse light. Saturate to keep within the 0-1 range.
       float NdotL = dot(normal, lightDir);
       float intensity = saturate(NdotL);

       // Calculate the diffuse light factoring in light color, power and the attenuation
       OUT.Diffuse = intensity * light.diffuseColor * light.diffusePower / distance;

       //Calculate the half vector between the light vector and the view vector.
       //This is typically slower than calculating the actual reflection vector
       // due to the normalize function's reciprocal square root
       float3 H = normalize(lightDir + viewDir);

       //Intensity of the specular light
       float NdotH = dot(normal, H);
       intensity = pow(saturate(NdotH), specularHardness);

       //Sum up the specular light factoring
       OUT.Specular = intensity * light.specularColor * light.specularPower / distance;
   }
   return OUT;
}

Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Top down approach design
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education