clean up leftovers from 3d samples

Change-Id: Ifb2414932d43ea3fafe7226dccb4acafdc41a07d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/272337
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/samplecode/Sample3D.cpp b/samplecode/Sample3D.cpp
index 3dac5cf..0caa247 100644
--- a/samplecode/Sample3D.cpp
+++ b/samplecode/Sample3D.cpp
@@ -71,11 +71,6 @@
     return inverse;
 }
 
-static SkPoint project(const SkM44& m, SkV4 p) {
-    auto v = m * p;
-    return {v.x / v.w, v.y / v.w};
-}
-
 class Sample3DView : public Sample {
 protected:
     float   fNear = 0.05f;
@@ -86,21 +81,6 @@
     SkV3    fCOA { 0, 0, 0 };
     SkV3    fUp  { 0, 1, 0 };
 
-    SkM44   fRot;
-    SkV3    fTrans;
-
-    void rotate(float x, float y, float z) {
-        SkM44 r;
-        if (x) {
-            r.setRotateUnit({1, 0, 0}, x);
-        } else if (y) {
-            r.setRotateUnit({0, 1, 0}, y);
-        } else {
-            r.setRotateUnit({0, 0, 1}, z);
-        }
-        fRot = r * fRot;
-    }
-
 public:
     void saveCamera(SkCanvas* canvas, const SkRect& area, SkScalar zscale) {
         SkM44 camera = Sk3LookAt(fEye, fCOA, fUp),
@@ -112,28 +92,6 @@
         // as part of our "camera".
         canvas->experimental_saveCamera(viewport * perspective, camera * inv(viewport));
     }
-
-    bool onChar(SkUnichar uni) override {
-        float delta = SK_ScalarPI / 30;
-        switch (uni) {
-            case '8': this->rotate( delta, 0, 0); return true;
-            case '2': this->rotate(-delta, 0, 0); return true;
-            case '4': this->rotate(0,  delta, 0); return true;
-            case '6': this->rotate(0, -delta, 0); return true;
-            case '-': this->rotate(0, 0,  delta); return true;
-            case '+': this->rotate(0, 0, -delta); return true;
-
-            case 'i': fTrans.z += 0.1f; SkDebugf("z %g\n", fTrans.z); return true;
-            case 'k': fTrans.z -= 0.1f; SkDebugf("z %g\n", fTrans.z); return true;
-
-            case 'n': fNear += 0.1f; SkDebugf("near %g\n", fNear); return true;
-            case 'N': fNear -= 0.1f; SkDebugf("near %g\n", fNear); return true;
-            case 'f': fFar  += 0.1f; SkDebugf("far  %g\n", fFar); return true;
-            case 'F': fFar  -= 0.1f; SkDebugf("far  %g\n", fFar); return true;
-            default: break;
-        }
-        return false;
-    }
 };
 
 struct Face {
@@ -178,289 +136,8 @@
     {             0,-SK_ScalarPI/2,  SK_ColorYELLOW }, // right
 };
 
-#include "include/core/SkColorFilter.h"
-#include "include/effects/SkColorMatrix.h"
-
-static SkColorMatrix comput_planar_lighting(SkCanvas* canvas, SkV3 lightDir) {
-    SkM44 l2w = canvas->experimental_getLocalToWorld();
-    auto normal = SkV3::Normalize(l2w * SkV3{0, 0, 1});
-    float dot = -normal.dot(lightDir);
-
-    SkColorMatrix cm;
-    if (dot < 0) {
-        dot = 0;
-    }
-
-    float ambient = 0.5f;
-    float scale = ambient + dot;
-    cm.setScale(scale, scale, scale, 1);
-    return cm;
-}
-
-struct Light {
-    SkPoint fCenter;
-    SkPoint fEndPt;
-    SkScalar fRadius;
-    SkScalar fHeight;
-
-    bool hitTest(SkScalar x, SkScalar y) const {
-        auto xx = x - fCenter.fX;
-        auto yy = y - fCenter.fY;
-        return xx*xx + yy*yy <= fRadius*fRadius;
-    }
-
-    void update(SkScalar x, SkScalar y) {
-        auto xx = x - fCenter.fX;
-        auto yy = y - fCenter.fY;
-        auto len = SkScalarSqrt(xx*xx + yy*yy);
-        if (len > fRadius) {
-            xx *= fRadius / len;
-            yy *= fRadius / len;
-        }
-        fEndPt = {fCenter.fX + xx, fCenter.fY + yy};
-    }
-
-    SkV3 getDir() const {
-        auto pt = fEndPt - fCenter;
-        return SkV3::Normalize({pt.fX, pt.fY, -fHeight});
-    }
-
-    void draw(SkCanvas* canvas) {
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        canvas->drawCircle(fCenter.fX, fCenter.fY, 5, paint);
-        paint.setStyle(SkPaint::kStroke_Style);
-        canvas->drawCircle(fCenter.fX, fCenter.fY, fRadius, paint);
-        paint.setColor(SK_ColorRED);
-        canvas->drawLine(fCenter.fX, fCenter.fY, fEndPt.fX, fEndPt.fY, paint);
-    }
-};
-
-class SampleRR3D : public Sample3DView {
-    SkRRect fRR;
-    Light   fLight = {
-        {60, 60}, {60, 60}, 50, 10
-    };
-    sk_sp<SkShader> fShader;
-
-    SkString name() override { return SkString("rrect3d"); }
-
-    void onOnceBeforeDraw() override {
-        fRR = SkRRect::MakeRectXY({20, 20, 380, 380}, 50, 50);
-        fShader = GetResourceAsImage("images/mandrill_128.png")
-                        ->makeShader(SkMatrix::MakeScale(3, 3));
-    }
-
-    bool onChar(SkUnichar uni) override {
-        return this->Sample3DView::onChar(uni);
-    }
-
-    void drawContent(SkCanvas* canvas, const SkM44& m) {
-        SkM44 trans = SkM44::Translate(200, 200, 0);   // center of the rotation
-
-        canvas->experimental_concat44(trans * fRot * m * inv(trans));
-
-        if (!front(canvas->experimental_getLocalToDevice())) {
-            return;
-        }
-
-        SkPaint paint;
-        paint.setAlphaf(front(canvas->experimental_getLocalToDevice()) ? 1 : 0.25f);
-        paint.setShader(fShader);
-
-        SkColorMatrix cm = comput_planar_lighting(canvas, fLight.getDir());
-        paint.setColorFilter(SkColorFilters::Matrix(cm));
-
-        canvas->drawRRect(fRR, paint);
-    }
-
-    void onDrawContent(SkCanvas* canvas) override {
-        canvas->save();
-        canvas->translate(400, 300);
-
-        this->saveCamera(canvas, {0, 0, 400, 400}, 200);
-
-        for (auto f : faces) {
-            SkAutoCanvasRestore acr(canvas, true);
-            this->drawContent(canvas, f.asM44(200));
-        }
-
-        canvas->restore();
-        canvas->restore();
-
-        fLight.draw(canvas);
-    }
-
-    Click* onFindClickHandler(SkScalar x, SkScalar y, skui::ModifierKey modi) override {
-        if (fLight.hitTest(x, y)) {
-            return new Click();
-        }
-        return nullptr;
-    }
-    bool onClick(Click* click) override {
-        fLight.update(click->fCurr.fX, click->fCurr.fY);
-        return true;
-    }
-};
-DEF_SAMPLE( return new SampleRR3D(); )
-
 #include "include/effects/SkRuntimeEffect.h"
 
-struct LightPos {
-    SkV4     fPos;
-    SkScalar fUIRadius;
-
-    bool hitTest(SkScalar x, SkScalar y) const {
-        auto xx = x - fPos.x;
-        auto yy = y - fPos.y;
-        return xx*xx + yy*yy <= fUIRadius*fUIRadius;
-    }
-
-    void update(SkScalar x, SkScalar y) {
-        fPos.x = x;
-        fPos.y = y;
-    }
-
-    void draw(SkCanvas* canvas) {
-        SkPaint paint;
-        paint.setAntiAlias(true);
-
-        SkAutoCanvasRestore acr(canvas, true);
-        canvas->experimental_concat44(SkM44::Translate(0, 0, fPos.z));
-        canvas->drawCircle(fPos.x, fPos.y, fUIRadius, paint);
-    }
-};
-
-class SamplePointLight3D : public Sample3DView {
-    SkRRect fRR;
-    LightPos fLight = {{200, 200, 800, 1}, 8};
-
-    sk_sp<SkShader> fShader;
-    sk_sp<SkRuntimeEffect> fEffect;
-
-    SkM44 fWorldToClick,
-          fClickToWorld;
-
-    SkString name() override { return SkString("pointlight3d"); }
-
-    void onOnceBeforeDraw() override {
-        fRR = SkRRect::MakeRectXY({20, 20, 380, 380}, 50, 50);
-        fShader = GetResourceAsImage("images/mandrill_128.png")
-                        ->makeShader(SkMatrix::MakeScale(3, 3));
-
-        const char code[] = R"(
-        //    in fragmentProcessor texture;
-        //       color = sample(texture) * half(scale);
-
-            uniform float4x4 localToWorld;
-            uniform float3   lightPos;
-
-            // TODO: Remove these helpers once all intrinsics work on the raster backend
-            float3 normalize_(float3 v) {
-                return v / sqrt(dot(v, v));
-            }
-
-            float max_(float a, float b) {
-                return a > b ? a : b;
-            }
-
-            void main(float2 p, inout half4 color) {
-                float3 plane_pos = (localToWorld * float4(p, 0, 1)).xyz;
-                float3 plane_norm = normalize_((localToWorld * float4(0, 0, 1, 0)).xyz);
-                float3 light_dir = normalize_(lightPos - plane_pos);
-                float ambient = 0.5;
-                float dp = dot(plane_norm, light_dir);
-                float scale = ambient + max_(dp, 0);
-
-                color = color * half4(float4(scale, scale, scale, 1));
-            }
-        )";
-        auto [effect, error] = SkRuntimeEffect::Make(SkString(code));
-        if (!effect) {
-            SkDebugf("runtime error %s\n", error.c_str());
-        }
-        fEffect = effect;
-    }
-
-    bool onChar(SkUnichar uni) override {
-        switch (uni) {
-            case 'Z': fLight.fPos.z += 10; return true;
-            case 'z': fLight.fPos.z -= 10; return true;
-        }
-        return this->Sample3DView::onChar(uni);
-    }
-
-    void drawContent(SkCanvas* canvas, const SkM44& m, SkColor color) {
-        SkM44 trans = SkM44::Translate(200, 200, 0);   // center of the rotation
-
-        canvas->experimental_concat44(trans * fRot * m * inv(trans));
-
-        // wonder if the runtimeeffect can do this reject? (in a setup function)
-        if (!front(canvas->experimental_getLocalToDevice())) {
-            return;
-        }
-
-        struct Uniforms {
-            SkM44  fLocalToWorld;
-            SkV3   fLightPos;
-        } uni;
-        uni.fLocalToWorld = canvas->experimental_getLocalToWorld();
-        uni.fLightPos     = {fLight.fPos.x, fLight.fPos.y, fLight.fPos.z};
-        sk_sp<SkData> data = SkData::MakeWithCopy(&uni, sizeof(uni));
-
-        SkPaint paint;
-        paint.setColor(color);
-        paint.setShader(fEffect->makeShader(data, &fShader, 0, nullptr, true));
-
-        canvas->drawRRect(fRR, paint);
-    }
-
-    void setClickToWorld(SkCanvas* canvas, const SkM44& clickM) {
-        auto l2d = canvas->experimental_getLocalToDevice();
-        fWorldToClick = inv(clickM) * l2d;
-        fClickToWorld = inv(fWorldToClick);
-    }
-
-    void onDrawContent(SkCanvas* canvas) override {
-        SkM44 clickM = canvas->experimental_getLocalToDevice();
-
-        canvas->save();
-        canvas->translate(400, 300);
-
-        this->saveCamera(canvas, {0, 0, 400, 400}, 200);
-
-        this->setClickToWorld(canvas, clickM);
-
-        for (auto f : faces) {
-            SkAutoCanvasRestore acr(canvas, true);
-            this->drawContent(canvas, f.asM44(200), f.fColor);
-        }
-
-        fLight.draw(canvas);
-        canvas->restore();
-        canvas->restore();
-    }
-
-    Click* onFindClickHandler(SkScalar x, SkScalar y, skui::ModifierKey modi) override {
-        auto L = fWorldToClick * fLight.fPos;
-        SkPoint c = project(fClickToWorld, {x, y, L.z/L.w, 1});
-        if (fLight.hitTest(c.fX, c.fY)) {
-            return new Click();
-        }
-        return nullptr;
-    }
-    bool onClick(Click* click) override {
-        auto L = fWorldToClick * fLight.fPos;
-        SkPoint c = project(fClickToWorld, {click->fCurr.fX, click->fCurr.fY, L.z/L.w, 1});
-        fLight.update(c.fX, c.fY);
-        return true;
-    }
-};
-DEF_SAMPLE( return new SamplePointLight3D(); )
-
-#include "include/core/SkColorPriv.h"
-#include "include/core/SkSurface.h"
-
 struct LightOnSphere {
     SkVec2   fLoc;
     SkScalar fDistance;
@@ -610,7 +287,7 @@
                 SkM44 trans = SkM44::Translate(200, 200, 0);   // center of the rotation
                 SkM44 m = fRotateAnimator.rotation() * fRotation * f.asM44(200);
 
-                canvas->experimental_concat44(trans * fRot * m * inv(trans));
+                canvas->experimental_concat44(trans * m * inv(trans));
                 this->drawContent(canvas, f.fColor, index++, drawFront);
             }
         }