回答編集履歴
1
範囲外を抜く案を追記
test
CHANGED
@@ -689,3 +689,115 @@
|
|
689
689
|
|
690
690
|
|
691
691
|
字数節約のためコード中のコメントは簡素になっています。もし疑問点がありましたらお気軽にコメントください。
|
692
|
+
|
693
|
+
|
694
|
+
|
695
|
+
##範囲外を透明に抜く件について
|
696
|
+
|
697
|
+
|
698
|
+
|
699
|
+
まず、testファイル上のデータを下記のようにして、プラス方向とマイナス方向に範囲をはみ出すようにしました。
|
700
|
+
|
701
|
+
|
702
|
+
|
703
|
+
```
|
704
|
+
|
705
|
+
-0.25
|
706
|
+
|
707
|
+
-0.08333333333
|
708
|
+
|
709
|
+
0.08333333333
|
710
|
+
|
711
|
+
0.25
|
712
|
+
|
713
|
+
0.41666666666
|
714
|
+
|
715
|
+
0.58333333333
|
716
|
+
|
717
|
+
0.75
|
718
|
+
|
719
|
+
0.91666666666
|
720
|
+
|
721
|
+
1.08333333333
|
722
|
+
|
723
|
+
```
|
724
|
+
|
725
|
+
|
726
|
+
|
727
|
+
シェーダーは最初の`Hidden/Heatmap`をベースに検討することにし、マテリアルの`Radius`は0.45としました。
|
728
|
+
|
729
|
+
|
730
|
+
|
731
|
+
まず第1案としては、グラデーションテクスチャの両端を透明にしてしまうのはどうでしょうか?
|
732
|
+
|
733
|
+
両端1ピクセルを透明にすれば...
|
734
|
+
|
735
|
+
|
736
|
+
|
737
|
+
![グラデーション1](81f1375380c9b4c127a18c84021b2306.png)
|
738
|
+
|
739
|
+
|
740
|
+
|
741
|
+
0.0以下や1.0以上の部分が透明になるでしょうし...
|
742
|
+
|
743
|
+
|
744
|
+
|
745
|
+
![結果1](b704e857ca1581310da2b09388505445.png)
|
746
|
+
|
747
|
+
|
748
|
+
|
749
|
+
両端の透明度をなだらかに変化させれば...
|
750
|
+
|
751
|
+
|
752
|
+
|
753
|
+
![グラデーション2](3c36ee74284caccc65b8004fba138165.png)
|
754
|
+
|
755
|
+
|
756
|
+
|
757
|
+
境界をなめらかにすることができるかと思います。
|
758
|
+
|
759
|
+
|
760
|
+
|
761
|
+
![結果2](caaa0c189f87986669e8aa28edf9be5a.png)
|
762
|
+
|
763
|
+
|
764
|
+
|
765
|
+
また第2案として、グラデーションテクスチャには変更を加えず、シェーダーコードの下記部分を...
|
766
|
+
|
767
|
+
|
768
|
+
|
769
|
+
```ShaderLab
|
770
|
+
|
771
|
+
h = saturate(h);
|
772
|
+
|
773
|
+
half4 color = tex2D(_HeatTex, float2(h, 0.5));
|
774
|
+
|
775
|
+
return color;
|
776
|
+
|
777
|
+
```
|
778
|
+
|
779
|
+
|
780
|
+
|
781
|
+
下記のように変更し、`h`が0.0を下回ったり1.0を上回ったフラグメントを破棄してしまう手もあるかと思います。
|
782
|
+
|
783
|
+
|
784
|
+
|
785
|
+
```ShaderLab
|
786
|
+
|
787
|
+
half clampedH = saturate(h);
|
788
|
+
|
789
|
+
clip(-abs(h - clampedH));
|
790
|
+
|
791
|
+
half4 color = tex2D(_HeatTex, float2(clampedH, 0.5));
|
792
|
+
|
793
|
+
return color;
|
794
|
+
|
795
|
+
```
|
796
|
+
|
797
|
+
|
798
|
+
|
799
|
+
こちらの場合だと、0.0ぴったりや1.0ぴったりは範囲内におさまっていると判定させることができるでしょう。
|
800
|
+
|
801
|
+
|
802
|
+
|
803
|
+
![結果3](cfc52cb57c4e54164ef6e2d9ff886a0e.png)
|