<> <> <> <> <> DIRECTORY Imager, Rope, SV3d, SVModelTypes, SVVector3d; SVShading: CEDAR DEFINITIONS = BEGIN <<>> <> <> <> Color: TYPE = Imager.Color; LightSource: TYPE = SVModelTypes.LightSource; LightSourceList: TYPE = SVModelTypes.LightSourceList; Vector3d: TYPE = SVVector3d.Vector3d; Point3d: TYPE = SV3d.Point3d; <> <> ExtractRGB: PROC [color: Color] RETURNS [r,g,b: REAL]; NormalizeRGB: PROC [r,g,b: REAL] RETURNS [color: Color]; DiffuseReflectance: PUBLIC PROCEDURE [surfaceNormal: Vector3d, surfacePt: Point3d, surfaceColor: Color, lightSources: LightSourceList] RETURNS [r, g, b: REAL]; <> DiffuseAndSpecularReflectance: PROCEDURE [eyePoint: Point3d, surfaceNormal: Vector3d, surfacePt: Point3d, surfaceColor: Color, lightSources: LightSourceList] RETURNS [r, g, b: REAL]; << Frank Crow's highlighted intensity model. r, g, b will be roughly in the range [0..1], but may actually be larger than 1.>> <> <> SimpleFilmIrradiance: PROCEDURE [radiance: REAL, omegaAperture: REAL] RETURNS [irradiance: REAL]; SolidAngle: PROCEDURE [surfacePoint: Point3d, areaAperture: REAL] RETURNS [omegaAperture: REAL]; <> LamFilmIrradiance: PROCEDURE [surfaceNormal: Vector3d, lightSource: LightSource, albedo: REAL _ 1, omegaAperture: REAL] RETURNS [irradiance: REAL]; <> <<>> <> <<>> <> END.