refine scene

combine kinect spout texture
refine snowflake size
master
uc-hoba 8 years ago
parent 2095133a03
commit e0b79c3999
  1. 827
      Unity_2018_Frozen/Assets/Frozen/Frozen.unity
  2. 13
      Unity_2018_Frozen/Assets/Frozen/Shader/SnowflakeParticleUpdate.compute
  3. 33
      Unity_2018_Frozen/Assets/KinectOpticalFlow/Kinect2MotionTexture.renderTexture
  4. 9
      Unity_2018_Frozen/Assets/KinectOpticalFlow/Kinect2MotionTexture.renderTexture.meta
  5. 5
      Unity_2018_Frozen/Assets/KinectOpticalFlow/KinectOpticalFlow.cs
  6. 20
      Unity_2018_Frozen/Assets/KinectOpticalFlow/KinectUpdateShader.compute

File diff suppressed because it is too large Load Diff

@ -135,15 +135,22 @@ void CSMain(uint3 id : SV_DispatchThreadID)
// calculate model matrix // calculate model matrix
{ {
float size = uni.geomSize * lerp(1, pow(1.0f - saturate(p.life), 1.0f / 2.2f), any(uni.lifeDuration)); float size = lerp(1, pow(1.0f - saturate(p.life), 1.0f / 2.2f), any(uni.lifeDuration));
size *= lerp(0.5, 1.0, p.seed);
float life = saturate(p.life);
float th = 0.05f;
size = (life < th) ? (life / th) : ((1.0 - life) / (1.0 - th));
size = lerp(1, sin(size * 3.14159f * 0.5f), any(uni.lifeDuration));
size *= uni.geomSize * lerp(0.5, 1.0, p.seed);
if (idx > (uint)(uni.numRate * bufferCount) || (p.life < 0.0f && uni.lifeDuration > 0.1f)) if (idx > (uint)(uni.numRate * bufferCount) || (p.life < 0.0f && uni.lifeDuration > 0.1f))
{ {
size = 0.0f; size = 0.0f;
} }
float4x4 mat = make_translation_matrix(p.position); float4x4 mat = make_translation_matrix(p.position);
mat = mul(mat, quat_to_rotation_matrix(p.quat)); //mat = mul(mat, quat_to_rotation_matrix(p.quat));
mat = mul(mat, quat_to_rotation_matrix(float4(0, p.quat.y, 0, 1)));
mat = mul(mat, make_scaling_matrix(size)); mat = mul(mat, make_scaling_matrix(size));
p.model_matrix = mat; p.model_matrix = mat;
} }

@ -0,0 +1,33 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!84 &8400000
RenderTexture:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Kinect2MotionTexture
m_ImageContentsHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
m_ForcedFallbackFormat: 4
m_DownscaleFallback: 0
m_Width: 1024
m_Height: 424
m_AntiAliasing: 1
m_DepthFormat: 0
m_ColorFormat: 11
m_MipMap: 0
m_GenerateMips: 1
m_SRGB: 0
m_UseDynamicScale: 0
m_BindMS: 0
m_TextureSettings:
serializedVersion: 2
m_FilterMode: 1
m_Aniso: 0
m_MipBias: 0
m_WrapU: 1
m_WrapV: 1
m_WrapW: 1
m_Dimension: 2
m_VolumeDepth: 1

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: f9c2cef894c9cc54f807a92207bf6eda
timeCreated: 1508289246
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 8400000
userData:
assetBundleName:
assetBundleVariant:

@ -100,8 +100,9 @@ namespace UltraCombos
updateShader.SetVector("FluidDim", fluidSimulation.GridDim); updateShader.SetVector("FluidDim", fluidSimulation.GridDim);
updateShader.SetInt("flipX", flipX ? 1 : 0); updateShader.SetInt("flipX", flipX ? 1 : 0);
updateShader.SetTexture(0, "PositionTexture", renderTextures[POSITION]); //updateShader.SetTexture(0, "PositionTexture", renderTextures[POSITION]);
updateShader.SetTexture(0, "VelocityTexture", renderTextures[VELOCITY]); //updateShader.SetTexture(0, "VelocityTexture", renderTextures[VELOCITY]);
updateShader.SetTexture(0, "MotionTexture", renderTextures[0]);
foreach (var buf in kinectBuffers) foreach (var buf in kinectBuffers)
updateShader.SetBuffer(0, buf.bufferName, buf.obj); updateShader.SetBuffer(0, buf.bufferName, buf.obj);
updateShader.SetBuffer(0, "KinectGridBuffer", kinect_grid_buffer); updateShader.SetBuffer(0, "KinectGridBuffer", kinect_grid_buffer);

@ -1,4 +1,6 @@
// Each #kernel tells which function to compile; you can have many kernels #define WIDTH 512
#define HEIGHT 424
#pragma kernel CSMain #pragma kernel CSMain
RWStructuredBuffer<float4> KinectPositionBuffer; RWStructuredBuffer<float4> KinectPositionBuffer;
@ -8,8 +10,9 @@ RWStructuredBuffer<float4> KinectGridBuffer;
AppendStructuredBuffer<float4> HomePositionBuffer; AppendStructuredBuffer<float4> HomePositionBuffer;
AppendStructuredBuffer<float4> HomeVelocityBuffer; AppendStructuredBuffer<float4> HomeVelocityBuffer;
Texture2D<float4> PositionTexture; //Texture2D<float4> PositionTexture;
Texture2D<float4> VelocityTexture; //Texture2D<float4> VelocityTexture;
Texture2D<float4> MotionTexture;
float4 ClipMin; float4 ClipMin;
float4 ClipMax; float4 ClipMax;
@ -22,9 +25,9 @@ int flipX;
[numthreads(512,1,1)] [numthreads(512,1,1)]
void CSMain (uint3 id : SV_DispatchThreadID) void CSMain (uint3 id : SV_DispatchThreadID)
{ {
uint2 tex_coord = uint2(id.x % 424, id.x / 424); uint2 tex_coord = uint2(id.x % HEIGHT, id.x / HEIGHT);
float4 pos = float4(PositionTexture[tex_coord].xyz, 1); float4 pos = float4(MotionTexture[tex_coord].xyz, 1);
//pos.y *= -1; //pos.y *= -1;
pos.z *= -1; pos.z *= -1;
pos.x = lerp(pos.x, -pos.x, flipX); pos.x = lerp(pos.x, -pos.x, flipX);
@ -34,7 +37,7 @@ void CSMain (uint3 id : SV_DispatchThreadID)
{ {
pos = mul(pos, ModelMatrix); pos = mul(pos, ModelMatrix);
float4 vel = VelocityTexture[tex_coord]; float4 vel = MotionTexture[tex_coord + uint2(WIDTH, 0)];
//vel.y *= -1; //vel.y *= -1;
vel.z *= -1; vel.z *= -1;
vel.x = lerp(vel.x, -vel.x, flipX); vel.x = lerp(vel.x, -vel.x, flipX);
@ -50,8 +53,11 @@ void CSMain (uint3 id : SV_DispatchThreadID)
grid_index = (int)grid_pos.x + (int)grid_pos.y * FluidDim.x + (int)grid_pos.z * FluidDim.x * FluidDim.y; grid_index = (int)grid_pos.x + (int)grid_pos.y * FluidDim.x + (int)grid_pos.z * FluidDim.x * FluidDim.y;
KinectGridBuffer[grid_index] += float4(vel.xyz, 1); KinectGridBuffer[grid_index] += float4(vel.xyz, 1);
if (pos_mag > 0.1f) if (pos_mag > 0.1f)// && pos.y < 0.5f)
{ {
pos.y = 0.0f;
vel.xyz = float3(0, 0, 0);
HomePositionBuffer.Append(float4(pos.xyz, 0)); HomePositionBuffer.Append(float4(pos.xyz, 0));
HomeVelocityBuffer.Append(float4(vel.xyz, 0)); HomeVelocityBuffer.Append(float4(vel.xyz, 0));
} }

Loading…
Cancel
Save