Class TPhongShading
Unit
Declaration
type TPhongShading = class(TCustomPhongShading)
Description
Renders shape and height maps using Phong shading.
Phong shading consist in adding an ambiant light, a diffuse light (angle between light and object), and a specular light (angle between light, object and observer, i.e. reflected light).
Height maps are grayscale images or a precise bitmaps filled with MapHeightToBGRA. They are used to determine orientation and position of the surface.
See tutorial on Phong shading.
Hierarchy
- TObject
- TCustomPhongShading
- TPhongShading
Overview
Fields
![]() |
AmbientFactor: Single; |
![]() |
DiffuseSaturation: Boolean; |
![]() |
DiffusionFactor: Single; |
![]() |
LightColor: TBGRAPixel; |
![]() |
LightDestFactor: Single; |
![]() |
LightSourceDistanceFactor: Single; |
![]() |
LightSourceDistanceTerm: Single; |
![]() |
LightSourceIntensity: Single; |
![]() |
NegativeDiffusionFactor: Single; |
![]() |
SpecularFactor: Single; |
![]() |
SpecularIndex: Single; |
Methods
![]() |
constructor Create; |
![]() |
procedure Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; ColorMap : TBGRACustomBitmap); override; |
![]() |
procedure Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; Color : TBGRAPixel); override; |
![]() |
procedure DrawCone(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); overload; |
![]() |
procedure DrawCone(dest: TBGRACustomBitmap; X,Y,Size: Integer; Altitude: Single; Color: TBGRAPixel); overload; |
![]() |
procedure DrawHorizontalCylinder(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); |
![]() |
procedure DrawRectangle(dest: TBGRACustomBitmap; bounds: TRect; Border: Integer; Altitude: Single; Color: TBGRAPixel; RoundCorners: Boolean; Options: TRectangleMapOptions); |
![]() |
procedure DrawScan(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; ColorScan : IBGRAScanner); override; |
![]() |
procedure DrawSphere(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); |
![]() |
procedure DrawVerticalCone(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); |
![]() |
procedure DrawVerticalCylinder(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); |
![]() |
procedure DrawColorNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; Color : TBGRAPixel); |
![]() |
procedure DrawMapNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; ColorMap : TBGRACustomBitmap); |
![]() |
procedure DrawScannerNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; ColorScan : IBGRAScanner); |
Description
Fields
![]() |
AmbientFactor: Single; |
|
how concentrated reflected light is (positive value) | |
![]() |
DiffuseSaturation: Boolean; |
|
how much hidden surface are darkened (0..1) | |
![]() |
DiffusionFactor: Single; |
|
ambiant lighting whereever the point is (0..1) | |
![]() |
LightColor: TBGRAPixel; |
|
how much the location of the lightened pixel is taken into account (usually 0 or 1) | |
![]() |
LightDestFactor: Single; |
|
how much actual distance is taken into account (usually 0 or 1) | |
![]() |
LightSourceDistanceFactor: Single; |
|
minimum distance always added (positive value) | |
![]() |
LightSourceDistanceTerm: Single; |
|
global intensity of the light | |
![]() |
LightSourceIntensity: Single; |
|
This item has no description. | |
![]() |
NegativeDiffusionFactor: Single; |
|
diffusion, i.e. how much pixels are lightened by light source (0..1) | |
![]() |
SpecularFactor: Single; |
|
color of the light reflection | |
![]() |
SpecularIndex: Single; |
|
how much light is reflected (0..1) | |
Methods
![]() |
constructor Create; |
|
when diffusion saturates, use light color to show it | |
![]() |
procedure Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; ColorMap : TBGRACustomBitmap); override; |
|
Render with a color map of the same size as the height map. Map altitude indicate the global height of the map. | |
![]() |
procedure Draw(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; Color : TBGRAPixel); override; |
|
Render the specified map on the destination bitmap with one solid color. Map altitude indicate the global height of the map. | |
![]() |
procedure DrawCone(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); overload; |
|
This item has no description. | |
![]() |
procedure DrawCone(dest: TBGRACustomBitmap; X,Y,Size: Integer; Altitude: Single; Color: TBGRAPixel); overload; |
|
Draw a cone of the specified color | |
![]() |
procedure DrawHorizontalCylinder(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); |
|
Draw an horizontal cylinder of the specified color | |
![]() |
procedure DrawRectangle(dest: TBGRACustomBitmap; bounds: TRect; Border: Integer; Altitude: Single; Color: TBGRAPixel; RoundCorners: Boolean; Options: TRectangleMapOptions); |
|
Draw a rectangle of the specified color | |
![]() |
procedure DrawScan(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; ColorScan : IBGRAScanner); override; |
|
Render with a color scanner. Map altitude indicate the global height of the map. | |
![]() |
procedure DrawSphere(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); |
|
Draw a hemisphere of the specified color.
Example drawing a red sphere on a form:
procedure TForm1.FormPaint(Sender: TObject); var image: TBGRABitmap; phong: TPhongShading; begin phong := TPhongShading.Create; phong.LightPosition := Point(100, 100); phong.LightPositionZ := 150; phong.SpecularIndex := 20; phong.AmbientFactor := 0.4; phong.LightSourceIntensity := 250; phong.LightSourceDistanceTerm := 200; image := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToBGRA(ColorToRGB(clBtnFace))); phong.DrawSphere(image,rect(20,20,120,120),50,BGRA(255,0,0)); image.Draw(Canvas,0,0,True); image.free; end; | |
![]() |
procedure DrawVerticalCone(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); |
|
Draw a vertical cone of the specified color | |
![]() |
procedure DrawVerticalCylinder(dest: TBGRACustomBitmap; bounds: TRect; Altitude: Single; Color: TBGRAPixel); |
|
Draw a vertical cylinder of the specified color | |
![]() |
procedure DrawColorNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; Color : TBGRAPixel); |
|
This item has no description. | |
![]() |
procedure DrawMapNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; ColorMap : TBGRACustomBitmap); |
|
This item has no description. | |
![]() |
procedure DrawScannerNormal(dest: TBGRACustomBitmap; map: TBGRACustomBitmap; mapAltitude: single; ofsX,ofsY: integer; ColorScan : IBGRAScanner); |
|
This item has no description. | |

