15d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com/*
25d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com * Copyright 2013 Google Inc.
35d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com *
45d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com * Use of this source code is governed by a BSD-style license that can be
55d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com * found in the LICENSE file.
65d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com */
7f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h"
85d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com#include "SkCanvas.h"
95d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com#include "SkLightingImageFilter.h"
103d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips#include "SkPoint3.h"
115d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
125d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com#define FILTER_WIDTH_SMALL  SkIntToScalar(32)
135d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com#define FILTER_HEIGHT_SMALL SkIntToScalar(32)
145d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com#define FILTER_WIDTH_LARGE  SkIntToScalar(256)
155d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com#define FILTER_HEIGHT_LARGE SkIntToScalar(256)
165d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
17f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass LightingBaseBench : public Benchmark {
185d71adf4b187b41858139675a499a704af15b2cbsugoi@google.compublic:
19410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com    LightingBaseBench(bool small) : fIsSmall(small) { }
205d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
215d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprotected:
2212fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips    void draw(int loops, SkCanvas* canvas, sk_sp<SkImageFilter> imageFilter) const {
235d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        SkRect r = fIsSmall ? SkRect::MakeWH(FILTER_WIDTH_SMALL, FILTER_HEIGHT_SMALL) :
245d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com                              SkRect::MakeWH(FILTER_WIDTH_LARGE, FILTER_HEIGHT_LARGE);
255d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        SkPaint paint;
2612fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips        paint.setImageFilter(std::move(imageFilter));
273361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org        for (int i = 0; i < loops; i++) {
28c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com            canvas->drawRect(r, paint);
29c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com        }
305d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
315d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
323d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkPoint3 GetPointLocation() {
333d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips        static SkPoint3 pointLocation = SkPoint3::Make(0, 0, SkIntToScalar(10));
345d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return pointLocation;
355d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
365d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
373d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkPoint3 GetDistantDirection() {
385d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkScalar azimuthRad = SkDegreesToRadians(SkIntToScalar(225));
395d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkScalar elevationRad = SkDegreesToRadians(SkIntToScalar(5));
40df85c38163245c7fc3c23cad3a4ad104949f3a62Mike Reed        static SkPoint3 distantDirection = SkPoint3::Make(
41df85c38163245c7fc3c23cad3a4ad104949f3a62Mike Reed                                              SkScalarCos(azimuthRad) * SkScalarCos(elevationRad),
42df85c38163245c7fc3c23cad3a4ad104949f3a62Mike Reed                                              SkScalarSin(azimuthRad) * SkScalarCos(elevationRad),
43df85c38163245c7fc3c23cad3a4ad104949f3a62Mike Reed                                              SkScalarSin(elevationRad));
445d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return distantDirection;
455d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
465d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
473d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkPoint3 GetSpotLocation() {
483d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips        static SkPoint3 spotLocation = SkPoint3::Make(SkIntToScalar(-10),
493d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips                                                      SkIntToScalar(-10),
503d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips                                                      SkIntToScalar(20));
515d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return spotLocation;
525d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
535d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
543d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkPoint3 GetSpotTarget() {
553d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips        static SkPoint3 spotTarget = SkPoint3::Make(SkIntToScalar(40), SkIntToScalar(40), 0);
565d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return spotTarget;
575d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
585d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
593d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkScalar GetSpotExponent() {
605d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkScalar spotExponent = SK_Scalar1;
615d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return spotExponent;
625d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
635d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
643d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkScalar GetCutoffAngle() {
655d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkScalar cutoffAngle = SkIntToScalar(15);
665d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return cutoffAngle;
675d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
685d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
693d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkScalar GetKd() {
705d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkScalar kd = SkIntToScalar(2);
715d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return kd;
725d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
735d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
743d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkScalar GetKs() {
755d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkScalar ks = SkIntToScalar(1);
765d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return ks;
775d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
785d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
793d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkScalar GetShininess() {
805d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkScalar shininess = SkIntToScalar(8);
815d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return shininess;
825d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
835d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
843d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkScalar GetSurfaceScale() {
855d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkScalar surfaceScale = SkIntToScalar(1);
865d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return surfaceScale;
875d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
885d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
893d32d768cd8b66c49c070495c08f7933b9dd2423robertphillips    static SkColor GetWhite() {
905d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        static SkColor white(0xFFFFFFFF);
915d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return white;
925d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
935d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
945d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    bool fIsSmall;
95f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina    typedef Benchmark INHERITED;
965d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com};
975d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
985d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comclass LightingPointLitDiffuseBench : public LightingBaseBench {
995d71adf4b187b41858139675a499a704af15b2cbsugoi@google.compublic:
10012fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips    LightingPointLitDiffuseBench(bool small) : INHERITED(small) { }
1015d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1025d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprotected:
10336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    const char* onGetName() override {
1045d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return fIsSmall ? "lightingpointlitdiffuse_small" : "lightingpointlitdiffuse_large";
1055d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1065d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
107a1ebeb25e9acfcd801e089e063311d716b83b8a5mtklein    void onDraw(int loops, SkCanvas* canvas) override {
10812fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips        draw(loops, canvas, SkLightingImageFilter::MakePointLitDiffuse(GetPointLocation(),
10912fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetWhite(),
11012fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetSurfaceScale(),
11112fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetKd(),
11212fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       nullptr));
1135d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1145d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1155d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprivate:
1165d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    typedef LightingBaseBench INHERITED;
1175d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com};
1185d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1195d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comclass LightingDistantLitDiffuseBench : public LightingBaseBench {
1205d71adf4b187b41858139675a499a704af15b2cbsugoi@google.compublic:
12112fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips    LightingDistantLitDiffuseBench(bool small) : INHERITED(small) { }
1225d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1235d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprotected:
12436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    const char* onGetName() override {
1255d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return fIsSmall ? "lightingdistantlitdiffuse_small" : "lightingdistantlitdiffuse_large";
1265d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1275d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
128a1ebeb25e9acfcd801e089e063311d716b83b8a5mtklein    void onDraw(int loops, SkCanvas* canvas) override {
12912fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips        draw(loops, canvas, SkLightingImageFilter::MakeDistantLitDiffuse(GetDistantDirection(),
13012fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                         GetWhite(),
13112fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                         GetSurfaceScale(),
13212fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                         GetKd(),
13312fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                         nullptr));
1345d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1355d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1365d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprivate:
1375d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    typedef LightingBaseBench INHERITED;
1385d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com};
1395d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1405d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comclass LightingSpotLitDiffuseBench : public LightingBaseBench {
1415d71adf4b187b41858139675a499a704af15b2cbsugoi@google.compublic:
14212fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips    LightingSpotLitDiffuseBench(bool small) : INHERITED(small) { }
1435d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1445d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprotected:
14536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    const char* onGetName() override {
1465d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return fIsSmall ? "lightingspotlitdiffuse_small" : "lightingspotlitdiffuse_large";
1475d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1485d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
149a1ebeb25e9acfcd801e089e063311d716b83b8a5mtklein    void onDraw(int loops, SkCanvas* canvas) override {
15012fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips        draw(loops, canvas, SkLightingImageFilter::MakeSpotLitDiffuse(GetSpotLocation(),
15112fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetSpotTarget(),
15212fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetSpotExponent(),
15312fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetCutoffAngle(),
15412fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetWhite(),
15512fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetSurfaceScale(),
15612fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetKd(),
15712fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       nullptr));
1585d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1595d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1605d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprivate:
1615d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    typedef LightingBaseBench INHERITED;
1625d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com};
1635d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1645d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comclass LightingPointLitSpecularBench : public LightingBaseBench {
1655d71adf4b187b41858139675a499a704af15b2cbsugoi@google.compublic:
16612fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips    LightingPointLitSpecularBench(bool small) : INHERITED(small) { }
1675d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1685d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprotected:
16936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    const char* onGetName() override {
1705d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return fIsSmall ? "lightingpointlitspecular_small" : "lightingpointlitspecular_large";
1715d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1725d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
173a1ebeb25e9acfcd801e089e063311d716b83b8a5mtklein    void onDraw(int loops, SkCanvas* canvas) override {
17412fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips        draw(loops, canvas, SkLightingImageFilter::MakePointLitSpecular(GetPointLocation(),
17512fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                        GetWhite(),
17612fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                        GetSurfaceScale(),
17712fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                        GetKs(),
17812fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                        GetShininess(),
17912fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                        nullptr));
1805d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1815d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1825d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprivate:
1835d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    typedef LightingBaseBench INHERITED;
1845d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com};
1855d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1865d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comclass LightingDistantLitSpecularBench : public LightingBaseBench {
1875d71adf4b187b41858139675a499a704af15b2cbsugoi@google.compublic:
18812fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips    LightingDistantLitSpecularBench(bool small) : INHERITED(small) { }
1895d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
1905d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprotected:
19136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    const char* onGetName() override {
1925d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return fIsSmall ? "lightingdistantlitspecular_small" : "lightingdistantlitspecular_large";
1935d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
1945d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
195a1ebeb25e9acfcd801e089e063311d716b83b8a5mtklein    void onDraw(int loops, SkCanvas* canvas) override {
19612fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips        draw(loops, canvas, SkLightingImageFilter::MakeDistantLitSpecular(GetDistantDirection(),
19712fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                          GetWhite(),
19812fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                          GetSurfaceScale(),
19912fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                          GetKs(),
20012fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                          GetShininess(),
20112fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                          nullptr));
2025d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
2035d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
2045d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprivate:
2055d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    typedef LightingBaseBench INHERITED;
2065d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com};
2075d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
2085d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comclass LightingSpotLitSpecularBench : public LightingBaseBench {
2095d71adf4b187b41858139675a499a704af15b2cbsugoi@google.compublic:
21012fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips    LightingSpotLitSpecularBench(bool small) : INHERITED(small) { }
2115d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
2125d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprotected:
21336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    const char* onGetName() override {
2145d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com        return fIsSmall ? "lightingspotlitspecular_small" : "lightingspotlitspecular_large";
2155d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
2165d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
217a1ebeb25e9acfcd801e089e063311d716b83b8a5mtklein    void onDraw(int loops, SkCanvas* canvas) override {
21812fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips        draw(loops, canvas, SkLightingImageFilter::MakeSpotLitSpecular(GetSpotLocation(),
21912fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetSpotTarget(),
22012fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetSpotExponent(),
22112fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetCutoffAngle(),
22212fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetWhite(),
22312fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetSurfaceScale(),
22412fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetKs(),
22512fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       GetShininess(),
22612fa47d33f1e9eb69bb20d9daad2eccfc7288944robertphillips                                                                       nullptr));
2275d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    }
2285d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
2295d71adf4b187b41858139675a499a704af15b2cbsugoi@google.comprivate:
2305d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com    typedef LightingBaseBench INHERITED;
2315d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com};
2325d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
2335d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com///////////////////////////////////////////////////////////////////////////////
2345d71adf4b187b41858139675a499a704af15b2cbsugoi@google.com
235410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingPointLitDiffuseBench(true); )
236410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingPointLitDiffuseBench(false); )
237410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingDistantLitDiffuseBench(true); )
238410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingDistantLitDiffuseBench(false); )
239410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingSpotLitDiffuseBench(true); )
240410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingSpotLitDiffuseBench(false); )
241410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingPointLitSpecularBench(true); )
242410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingPointLitSpecularBench(false); )
243410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingDistantLitSpecularBench(true); )
244410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingDistantLitSpecularBench(false); )
245410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingSpotLitSpecularBench(true); )
246410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LightingSpotLitSpecularBench(false); )
247