unityzgy/Packages/com.unity.postprocessing/PostProcessing/Shaders/Debug/Vectorscope.compute
ayuan9957 8cfebcb657 feat: 丘陵地形优化与注册 + 地形材质调整
- 丘陵.unity: 地形材质优化(增大tileSize), 添加枯草2种, 替换树木为杨树+阔叶树, 平滑平坦区域过渡, Splatmap用Perlin噪声平滑混合减少突兀边界, 调整减少黄色层次
- 丘陵注册到程序: AB打包, SAMap.txt, SQLite数据库(替换平原), 本地化XML, 8192x8192地图图片(含绿色起点区域)
- 海岛/沙漠/山地: PermissibleArea MeshRenderer统一禁用, 移除临时砾石道路层
- 山地/海岛/沙漠: 地形材质参数调整
2026-07-29 15:50:34 +08:00

52 lines
1.5 KiB
Plaintext

#pragma warning(disable : 3568)
#pragma exclude_renderers gles gles3 d3d11_9x
#include "Packages/com.unity.postprocessing/PostProcessing/Shaders/StdLib.hlsl"
#include "Packages/com.unity.postprocessing/PostProcessing/Shaders/Colors.hlsl"
RWStructuredBuffer<uint> _VectorscopeBuffer;
Texture2D<float4> _Source;
CBUFFER_START (Params)
float4 _Params; // x: source width, y: source height, z: buffer size, w: linear?
CBUFFER_END
#define GROUP_SIZE_X 16
#define GROUP_SIZE_Y 16
#ifdef DISABLE_COMPUTE_SHADERS
TRIVIAL_COMPUTE_KERNEL(KVectorscopeGather)
TRIVIAL_COMPUTE_KERNEL(KVectorscopeClear)
#else
#pragma kernel KVectorscopeGather
[numthreads(GROUP_SIZE_X, GROUP_SIZE_Y, 1)]
void KVectorscopeGather(uint2 dispatchThreadId : SV_DispatchThreadID)
{
if (dispatchThreadId.x < uint(_Params.x) && dispatchThreadId.y < uint(_Params.y))
{
float3 color = saturate(_Source[dispatchThreadId].xyz);
if (_Params.w > 0)
color = LinearToSRGB(color);
float3 yuv = RgbToYCbCr(color);
yuv.yz += (0.5).xx;
uint u = (uint)floor(yuv.y * _Params.z);
uint v = (uint)floor(yuv.z * _Params.z);
InterlockedAdd(_VectorscopeBuffer[v * _Params.z + u], 1u);
}
}
#pragma kernel KVectorscopeClear
[numthreads(GROUP_SIZE_X, GROUP_SIZE_Y, 1)]
void KVectorscopeClear(uint2 dispatchThreadId : SV_DispatchThreadID)
{
if (dispatchThreadId.x < uint(_Params.z) && dispatchThreadId.y < uint(_Params.z))
_VectorscopeBuffer[dispatchThreadId.y * _Params.z + dispatchThreadId.x] = 0u;
}
#endif