git for Windows SDK に jqコマンドをインストールする

git for windows SDK は以下にインストールされる。

C:\git-sdk-64\git-bash.exe

git-bash.exeで使用可能なコマンドの実行ファイルは以下に格納されている

C:\git-sdk-64\usr\bin\

以下コマンドを実行して、bin以下にjq.exeをインストールする

curl -L -o /usr/bin/jq.exe https://github.com/stedolan/jq/releases/latest/download/jq-win64.exe

確認する

$ jq --version
jq-1.6

Windows+docker+selenium環境構築

Python 3.10.6
selenium 4.8.2
Docker Desktop 4.17.0

# コマンドプロンプトでpythonのバージョンを確認
python --version
# コマンドプロンプトでseleniumをバージョン指定してインストール
pip install selenium==4.8.2
# バージョン確認
python -c "import selenium; print(selenium.__version__)" 

Docker Desktop を以下からダウンロード
4.17.1は Windows defender に引っかかって入れられなったので
アーカイブから 4.17.0をダウンロードした docs.docker.com

公式のGitHub を参考に以下コマンドをコマンドプロンプトにペーストして実行する

docker run -d -p 4444:4444 -p 7900:7900 --shm-size="2g" selenium/standalone-chrome:4.8.2-20230325

github.com

Desktopとかにtest.pyみたいなpythonファイル を作成して以下をペースト

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--headless')

driver = webdriver.Remote(
    command_executor='http://localhost:4444/wd/hub',
    options=options,
)

driver.get('https://qiita.com')
print(driver.current_url)

driver.quit()

▼参考 qiita.com

コマンドプロンプトで以下を実行

python C:\Users\ユーザ名\Desktop\test.py

【Unity】動的バッチングの恩恵を受けようの会

SetPass call

SetPass callはメッシュの描画に
使用する設定(render state)をGPUに渡す命令呼び出しのこと。
これから描画するメッシュの設定が、
前に描画したメッシュの設定と異なる場合にのみ呼び出される。

Draw call

DirectXOpenGL等のグラフィックスAPIを用いて
CPUからGPUへオブジェクトの描画命令を出すこと。
最新のSetPass callによる設定を使用して描画を行う。

CPUは、GPUAPI呼び出しに必要な
meshやtexture、shaderなどの情報を用意する必要があり、負荷が高い。
ドローコールはCPU側の負荷のため、回数が多いとフレームレートが下がる可能性がある。

動的バッチング(Dynamic Batching)

CPUが条件に合うMeshをまとめてから
ドローコールを行いドローコールの回数を減らすための機能。

動的バッチングもCPU負荷なので、
ドローコールの負荷 < 動的バッチングの負荷だと逆効果になってしまう。

動的バッチングの機能を有効にするには
Player Settings の Dynamic Batching にチェック を入れる

動的バッチングの恩恵を受けるための条件

同じMaterialを共有している(同じShaderではない)

テクスチャだけが異なる二つのMaterialであれば、
テクスチャをアトラス化し、同じMaterialを使用するようにすれば条件をクリアできる

スクリプトでMaterialにアクセスする場合、
Renderer.materialを使用すると複製された別インスタンスのMaterialが返されてしまい
バッチングが効かなくなるのでRenderer.sharedMaterialを使用する。

頂点属性が900以下で頂点数が300以下である必要がある

頂点属性とは各頂点が持てる以下のようなデータのこと。

・法線(normal)  
・接線(tangent)  
・最大8つのテクスチャ座標(UV)  
・頂点カラー(color)  
・ボーンウェイトとブレンドインデックス

Shaderが座標、法線、UV0 の計3つの頂点属性を使用する場合は、
頂点数 300 までであればバッチ処理が有効になる。
また、座標、法線、UV0、UV1、接線 の計5つの使用する場合は、
5*180で頂点属性が900になるので 頂点数 180 までになる。

Transformにミラーを含まない

二つのGameObject間で同じMaterialを共有していも
片方のGameObjectのScaleが(x=1, Y=-1, z=1)のように
負数が設定されているとバッチングされない

ちなみに、(x=1, Y=-1, z=-1)のように具数個の負数だと、
反転の反転で元に戻るためバッチングが効く

マルチパスシェーダではない

マルチパスシェーダはShaderファイル内に Pass セクションが複数記述されているShaderのこと。

バッチ処理対応のRenderer

MeshRenderer, TrailRenderer, LineRenderer, ParticleSystem, SpriteRendererのみがバッチング可能。
SkinnedMeshRenderer や ClothRenderer やその他Rendererはバッチングに対応していない。

参考

docs.unity3d.com docs.unity3d.com learn.unity.com →A brief introduction to rendering の辺り esprog.hatenablog.com

音程

音程について調べた際のメモ
楽曲の音域を表すときの、「1オクターブ+短2度」「1オクターブ+長2度」「1オクターブ+増5度」のこと。

音程を表す用語

・音程:「音程」は音と音の距離のことをいう。音の高さのことではない。
・半音:「ド・ド♯」のように隣あった二つの音の距離を「半音」という。
全音:「ド・レ」のように半音二つ分の距離を「全音」という。

音程には「度」という単位を使用する。
度数は幹音(鍵盤でいう白鍵の音)単位で数え、譜面上で音符同士がいくつ離れているかを表す。
「ド・ド」のように同音の場合は1度と数える(同度)ため、0度という数え方は存在しない。
♯や♭は譜面上では同じ線上に書かれるので、度数=半音の数ではないことに注意。

音程は幹音単位で数えるため、同じ2度でも以下の2種類がある
・「ド・レ」のように間に単音「ド♯」を1つ挟む
・「ミ・ファ」のように間に単音を挟まない
音と音の距離が長い方を長n度と呼び、短い方を短n度と呼ぶ。
「2度、3度、6度、7度」のときに長短系の呼び方を使用する。

長短系の音程

「2度、3度、6度、7度」のときには長短系の呼び方を使用するが、
同じ度数でも長と短の2種類に分類される。

2度
・長2度:
全音(半音二つ分)の距離で構成される2度の音程。
2度の組み合わせの中で、「ミ・ファ」「シ・ド」以外は長2度に分類される。
例えば「ド・レ」は音階的には間にド♯があるので、音の距離は全音となっている。
・短2度:
半音一つ分の距離で構成される2度の音程。「ミ・ファ」「シ・ド」 のみ。

3度
・長3度:「ド・ミ」半音4つ分の距離
・短3度:「レ・ファ」半音3つ分の距離
「レ・ファ」や「ラ・ド」のように3度の音程に、「ミ・ファ」または「シ・ド」を含む場合、短3度となる。

6度
・長6度:半音9つ分の距離
・短6度:半音8つ分の距離
「ミ・ド」や「ラ・ファ」のように「ミ・ファ」と「シ・ド」の両方が含まれると短6度となる。

7度
・長7度:半音11つ分の距離
・短7度:半音10つ分の距離
「ミ・レ」や「ラ・ソ」のように「ミ・ファ」と「シ・ド」の両方が含まれると短7度となる。

完全系の音程

協和性が高い音程に対して完全系の呼び方を使用する。
1度
・同音の場合、完全1度と呼ぶ
(「ド・ド#」の場合はなんてよぶんだろう...)
8度
・8度は1オクターブ差となり、完全8度と呼ぶ
4度
・完全4度: 半音5つ分の距離の4度の音程を完全4度と呼ぶ。「ファ・シ」以外が該当する。
・増4度:半音6つ分の距離の4度の音程を増4度と呼ぶ。「ファ・シ」のみが該当する。
5度
・完全5度:半音7つ分の距離の5度の音程を完全5度と呼ぶ。「シ・ファ」以外が該当する。
・減5度:半音6つ分の距離の5度の音程を減5度と呼ぶ。「シ・ファ」のみが該当する。