master
chwan1 6 years ago
parent 1ffc91ce1a
commit 727c1022b5
  1. 7
      Unity-19050-05-BallPool/Assets/Frozen/Character.prefab.meta
  2. 122
      Unity-19050-05-BallPool/Assets/Frozen/Script/FrozenScreenToWorldSpace.cs
  3. 63
      Unity-19050-05-BallPool/Assets/Frozen/Shader/FrozenUnlitTexture.shader
  4. 70
      Unity-19050-05-BallPool/Assets/Frozen/Shader/UnlitColorAlpha.shader
  5. 43
      Unity-19050-05-BallPool/ProjectSettings/TagManager.asset

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 39491758eb9e12c4eabfd1587027ca77
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,122 @@
using System.Collections;
using System.Collections.Generic;
using UltraCombos.Utility.Attributes;
using UnityEngine;
public enum Area
{
LeftWall,
RightWall,
TopWall,
Floor
}
public class FrozenScreenToWorldSpace : MonoBehaviour
{
public static FrozenScreenToWorldSpace Instance
{
get
{
return instacnce;
}
}
private static FrozenScreenToWorldSpace instacnce;
public float width = 8;
public float depth = 5;
public float height = 3;
public float blackLength = 0.89f;
public float PixelsByMeter = 360;
public float finalPixelsByMeter = 90;
[Header("Debug")]
[SerializeField, ReadOnly]
Rect LeftWall;
[SerializeField, ReadOnly]
Rect TopWall;
[SerializeField, ReadOnly]
Rect RightWall;
[SerializeField, ReadOnly]
Rect Floor;
Dictionary<Area, Rect> RenderTextureROIList = new Dictionary<Area, Rect>();
private void Awake()
{
instacnce = this;
InitailROISetting();
}
void InitailROISetting()
{
var totalWidth = height * 2 + width;
var totalHeight = height + depth + blackLength;
var nWidth = width / totalWidth;//normalized
var nWidth2 = height / totalWidth;
var nHeight = height / totalHeight;
var nHeight2 = depth / totalHeight;
TopWall = new Rect(nWidth2, 0, nWidth, nHeight);
LeftWall = new Rect(0, nHeight, nWidth2, nHeight2);
Floor = new Rect(nWidth2, nHeight, nWidth, nHeight2);
RightWall = new Rect(nWidth + nWidth2, nHeight, nWidth2, nHeight2);
RenderTextureROIList = new Dictionary<Area, Rect>()
{
[Area.LeftWall] = LeftWall,
[Area.RightWall] = RightWall,
[Area.TopWall] = TopWall,
[Area.Floor] = Floor,
};
}
public Vector2 GetFinalScreenPos(Area area, Vector2 wallROI)
{
if (!RenderTextureROIList.ContainsKey(area))
return Vector2.zero;
Rect textureROI = RenderTextureROIList[area];
Vector2 currenPos = Vector2.zero;
switch (area)
{
case Area.LeftWall:
currenPos = Rect.NormalizedToPoint(textureROI, new Vector2(1 - wallROI.y, 1 - wallROI.x));
break;
case Area.RightWall:
currenPos = Rect.NormalizedToPoint(textureROI, new Vector2(wallROI.y, 1 - wallROI.x));
break;
case Area.TopWall:
currenPos = Rect.NormalizedToPoint(textureROI, new Vector2(wallROI.x, 1 - wallROI.y));
break;
}
currenPos = new Vector2(currenPos.x * Screen.width, (1 - currenPos.y) * Screen.height);
return currenPos;
}
public Vector2 GetWallRoiFromPosition(Area area, Vector3 position)
{
position -= transform.position;
Vector2 roi = Vector2.zero;
switch (area)
{
case Area.TopWall:
roi.x = (position.x + width * 0.5f) / width;
roi.y = position.y / height;
break;
case Area.LeftWall:
roi.x = (position.z + depth * 0.5f) / depth;
roi.y = position.y / height;
break;
case Area.RightWall:
roi.x = (position.z + depth * 0.5f) / depth;
roi.y = position.y / height;
break;
}
// Debug.Log($"{area} {position.ToString()} {roi.ToString()}");
return roi;
}
public Vector3 Position { get { return transform.position; } }
}

@ -0,0 +1,63 @@
Shader "UltraCombos/Frozen/Unlit/Texture"
{
Properties
{
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_Color("Color",Color) = (1,1,1,1)
[Toggle] _isGamma("is Gamma", Float) = 0
}
SubShader
{
//Tags { "RenderType"="Opaque" }
Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" }
LOD 100
ZWrite Off
Cull off
// Blend SrcAlpha OneMinusSrcAlpha
//Blend One OneMinusSrcAlpha
Blend SrcAlpha OneMinusSrcAlpha, Zero One
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float4 _Color;
float _Rate;
float _isGamma;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 frag_color = tex2D(_MainTex, i.uv);
frag_color.rgb = lerp(frag_color.rgb, GammaToLinearSpace(frag_color.rgb), _isGamma);
return frag_color * _Color;
}
ENDCG
}
}
}

@ -0,0 +1,70 @@
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
// Unlit alpha-blended shader.
// - no lighting
// - no lightmap support
// - no per-material color
Shader "Unlit/ColorTransparent" {
Properties {
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_Color("Color",Color) = (1,1,1,1)
}
SubShader {
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
LOD 100
ZWrite Off
// Blend SrcAlpha OneMinusSrcAlpha
Blend SrcAlpha OneMinusSrcAlpha, Zero One
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata_t {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct v2f {
float4 vertex : SV_POSITION;
float2 texcoord : TEXCOORD0;
UNITY_FOG_COORDS(1)
UNITY_VERTEX_OUTPUT_STEREO
};
sampler2D _MainTex;
float4 _MainTex_ST;
float4 _Color;
v2f vert (appdata_t v)
{
v2f o;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.texcoord) * _Color;
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
}

@ -0,0 +1,43 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!78 &1
TagManager:
serializedVersion: 2
tags: []
layers:
- Default
- TransparentFX
- Ignore Raycast
-
- Water
- UI
-
-
- Scene
- Particle
- Post
- Post2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
m_SortingLayers:
- name: Default
uniqueID: 0
locked: 0
Loading…
Cancel
Save