aviutl2 lut
ePiさんのaulutをいじったものです
cubeファイルをスライスして正方形に並べた画像にコンバートすれば使えます
https://gyazo.com/264bb23695c0c834919b5eb36a2c47e5
code:aulut改.anm2
--https://gist.github.com/ePi5131/cb68ba37fe325c5d0c9ae196f9b6f00eのフォークです
--LICENSE: WTFPL2
--変更内容: 512*512以外の画像に仮対応,テクスチャの参照方法を変更
--label:色調整
--information:aulut2改
--track@affect:適用度,0,100,100
--file@map_path:マップファイル
--track@tiles:Tiles,1,64,8,1
--[[pixelshader@apply3d:
Texture2D src : register(t0);
Texture2D map : register(t1);
SamplerState smp : register(s0){Filter = MIN_MAG_MIP_LINEAR;};
cbuffer constant0 : register(b0) {
float affect;
float map_size;
float tiles;
};
float2 index3dtouv(float3 pos, uint map_size, uint tiles)
{
float tile_x = floor(pos.z % float(tiles));
float tile_y = floor(pos.z / float(tiles));
float2 uv_tile = (pos.xy + 0.5) / map_size;
return (uv_tile + float2(tile_x, tile_y)) / tiles;
}
float3 domain(float3 src, uint map_size, uint tiles) {
float3 scaled = saturate(src) * (map_size-1);
float2 uv = index3dtouv(scaled, map_size, tiles);
return map.Sample(smp, uv,0).zyx; //ここのxyzの順番は切り出し方による
}
float4 apply3d(float4 pos : SV_Position,float2 uv : TEXCOORD0) : SV_Target {
float4 s = src.Sample(smp, uv, 0);
if (s.a == 0.f) discard;
float3 d = domain(s.rgb / s.a, uint(map_size), uint(tiles)) * s.a;
return float4(s.rgb * (1.f - affect) + d * affect, s.a);
}
]]
if map_path=="" then obj.load("ファイルを選択してください") return end
obj.copybuffer("cache:c","obj")
obj.load("image",map_path)
local map_w,map_h=obj.getpixel()
if map_w~=map_h then obj.load("正方形の画像を指定してください") return end
local map_size = map_w / tiles
obj.copybuffer("tmp","obj")
obj.copybuffer("obj","cache:c")
obj.pixelshader("apply3d","object",{"object","tempbuffer"},{affect/100,map_size,tiles})