├── .gitignore ├── Assets ├── 001.Matrix.meta ├── 001.Matrix │ ├── MVP.meta │ └── MVP │ │ ├── MVP.cs │ │ ├── MVP.cs.meta │ │ ├── MVP.mat │ │ ├── MVP.mat.meta │ │ ├── MVP.shader │ │ ├── MVP.shader.meta │ │ ├── MVP.unity │ │ ├── MVP.unity.meta │ │ ├── read.txt │ │ └── read.txt.meta ├── 002.Shading.meta ├── 002.Shading │ ├── 001.Lambert.meta │ ├── 001.Lambert │ │ ├── Lambert.cs │ │ ├── Lambert.cs.meta │ │ ├── Lambert.mat │ │ ├── Lambert.mat.meta │ │ ├── Lambert.shader │ │ ├── Lambert.shader.meta │ │ ├── Lambert.unity │ │ ├── Lambert.unity.meta │ │ ├── read.txt │ │ └── read.txt.meta │ ├── 002.Phong.meta │ ├── 002.Phong │ │ ├── Phong.cs │ │ ├── Phong.cs.meta │ │ ├── Phong.mat │ │ ├── Phong.mat.meta │ │ ├── Phong.shader │ │ ├── Phong.shader.meta │ │ ├── Phong.unity │ │ ├── Phong.unity.meta │ │ ├── read.txt │ │ └── read.txt.meta │ ├── 003.PerPixelPhongShader.meta │ ├── 003.PerPixelPhongShader │ │ ├── PerPixelPhongShader.cs │ │ ├── PerPixelPhongShader.cs.meta │ │ ├── PerPixelPhongShader.mat │ │ ├── PerPixelPhongShader.mat.meta │ │ ├── PerPixelPhongShader.shader │ │ ├── PerPixelPhongShader.shader.meta │ │ ├── PerPixelPhongShader.unity │ │ ├── PerPixelPhongShader.unity.meta │ │ ├── read.txt │ │ └── read.txt.meta │ ├── 004.PerPixelCook-TorranceShader.meta │ ├── 004.PerPixelCook-TorranceShader │ │ ├── PerPixelCookTorranceShader.cs │ │ ├── PerPixelCookTorranceShader.cs.meta │ │ ├── PerPixelCookTorranceShader.mat │ │ ├── PerPixelCookTorranceShader.mat.meta │ │ ├── PerPixelCookTorranceShader.shader │ │ ├── PerPixelCookTorranceShader.shader.meta │ │ ├── PerPixelCookTorranceShader.unity │ │ └── PerPixelCookTorranceShader.unity.meta │ ├── 005.BumpMapShader.meta │ ├── 005.BumpMapShader │ │ ├── BumpMapShader.cs │ │ ├── BumpMapShader.cs.meta │ │ ├── BumpMapShader.mat │ │ ├── BumpMapShader.mat.meta │ │ ├── BumpMapShader.unity │ │ ├── BumpMapShader.unity.meta │ │ ├── BumpShader.shader │ │ ├── BumpShader.shader.meta │ │ ├── bamp.png │ │ ├── bamp.png.meta │ │ ├── read.txt │ │ └── read.txt.meta │ ├── 006.OrenNayar.meta │ ├── 006.OrenNayar │ │ ├── OrenNayar.cs │ │ ├── OrenNayar.cs.meta │ │ ├── OrenNayar.mat │ │ ├── OrenNayar.mat.meta │ │ ├── OrenNayar.shader │ │ ├── OrenNayar.shader.meta │ │ ├── OrenNayar.unity │ │ ├── OrenNayar.unity.meta │ │ ├── read.txt │ │ └── read.txt.meta │ ├── 007.SphericalGaussian01.meta │ ├── 007.SphericalGaussian01 │ │ ├── Gause.mat │ │ ├── Gause.mat.meta │ │ ├── Gause.shader │ │ ├── Gause.shader.meta │ │ ├── Gause.unity │ │ └── Gause.unity.meta │ ├── 008.SphericalGaussian02.meta │ └── 008.SphericalGaussian02 │ │ ├── Gause.mat │ │ ├── Gause.mat.meta │ │ ├── Gause.shader │ │ ├── Gause.shader.meta │ │ ├── Gause.unity │ │ └── Gause.unity.meta ├── 003.CulcUV.meta ├── 003.CulcUV │ ├── CulcUV.cs │ ├── CulcUV.cs.meta │ ├── CulcUV.unity │ ├── CulcUV.unity.meta │ ├── Materials.meta │ ├── Materials │ │ ├── No Name.mat │ │ └── No Name.mat.meta │ ├── untitled.fbx │ └── untitled.fbx.meta ├── 004.UVChecker.meta ├── 004.UVChecker │ ├── Materials.meta │ ├── Materials │ │ ├── Material.mat │ │ └── Material.mat.meta │ ├── Sample.unity │ ├── Sample.unity.meta │ ├── UVChecker.cs │ └── UVChecker.cs.meta ├── 005.VTF.meta ├── 005.VTF │ ├── DirectXMode.shader │ ├── DirectXMode.shader.meta │ ├── OpenGLMode.shader │ ├── OpenGLMode.shader.meta │ ├── Vert Stuff.mat │ ├── Vert Stuff.mat.meta │ ├── Vert Stuff.psd │ ├── Vert Stuff.psd.meta │ ├── Vert Stuff.shader │ ├── Vert Stuff.shader.meta │ ├── Vert Stuff.unity │ └── Vert Stuff.unity.meta ├── 006.Tessellation.meta ├── 006.Tessellation │ ├── 001_Simple.meta │ ├── 001_Simple │ │ ├── Sample.unity │ │ ├── Sample.unity.meta │ │ ├── SimpleTessellation.mat │ │ ├── SimpleTessellation.mat.meta │ │ ├── SimpleTessellation.shader │ │ └── SimpleTessellation.shader.meta │ ├── 002_LOD.meta │ ├── 002_LOD │ │ ├── LODTessellation.mat │ │ ├── LODTessellation.mat.meta │ │ ├── LODTessellation.shader │ │ ├── LODTessellation.shader.meta │ │ ├── Sample.unity │ │ └── Sample.unity.meta │ ├── 003.meta │ ├── 003 │ │ ├── BezierTessellation.mat │ │ ├── BezierTessellation.mat.meta │ │ ├── BezierTessellation.shader │ │ ├── BezierTessellation.shader.meta │ │ ├── Sample.unity │ │ └── Sample.unity.meta │ ├── Model.meta │ └── Model │ │ ├── Materials.meta │ │ ├── Materials │ │ ├── No Name.mat │ │ └── No Name.mat.meta │ │ ├── monky.fbx │ │ └── monky.fbx.meta ├── 007NearestSurfacePoint.meta └── 007NearestSurfacePoint │ ├── NearestPoint.cs │ ├── NearestPoint.cs.meta │ ├── New Material 1.mat │ ├── New Material 1.mat.meta │ ├── New Material 2.mat │ ├── New Material 2.mat.meta │ ├── New Material.mat │ ├── New Material.mat.meta │ ├── Sample.unity │ └── Sample.unity.meta ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset └── Readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | /[Ll]ibrary/ 2 | /[Tt]emp/ 3 | /[Oo]bj/ 4 | /[Bb]uild/ 5 | /MBL.wiki/ 6 | 7 | # Autogenerated VS/MD solution and project files 8 | *.csproj 9 | *.unityproj 10 | *.sln 11 | *.suo 12 | *.tmp 13 | *.user 14 | *.userprefs 15 | *.pidb 16 | *.booproj 17 | 18 | # Unity3D generated meta files 19 | *.pidb.meta 20 | 21 | # Unity3D Generated File On Crash Reports 22 | sysinfo.txt 23 | -------------------------------------------------------------------------------- /Assets/001.Matrix.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a27c551e1de5dec42b9329af6cce8232 3 | folderAsset: yes 4 | timeCreated: 1460543959 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b880fbf192f9da4bb5aae0943e24225 3 | folderAsset: yes 4 | timeCreated: 1460544024 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/MVP.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | [ExecuteInEditMode] 5 | public class MVP : MonoBehaviour 6 | { 7 | [SerializeField] 8 | private Material material; 9 | 10 | public void OnWillRenderObject() 11 | { 12 | if(material == null) 13 | return; 14 | 15 | Camera renderCamera = Camera.current; 16 | //Matrix4x4 m = gameObject.transform.localToWorldMatrix; 17 | Matrix4x4 m = GetComponent().localToWorldMatrix; 18 | Matrix4x4 v = renderCamera.worldToCameraMatrix; 19 | Matrix4x4 p = renderCamera.cameraType == CameraType.SceneView ? 20 | GL.GetGPUProjectionMatrix(renderCamera.projectionMatrix, true) : renderCamera.projectionMatrix; 21 | 22 | Matrix4x4 mvp = p * v * m; 23 | Matrix4x4 mv = v * m; 24 | 25 | //DynamicBatchingによって複数のオブジェクトでマテリアルを共有すると 26 | //matrixがオブジェクトごとに作用してくれない。こういった用途では 27 | //shaderで素直にUNITY_MATRIXを使うべき 28 | 29 | material.SetMatrix("mvp_matrix", mvp); 30 | material.SetMatrix("mv_matrix", mv); 31 | material.SetMatrix("v_matrix", v); 32 | } 33 | } -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/MVP.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f7b9f6066a34f0a4b824e0ce1e5d37e2 3 | timeCreated: 1460560883 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/MVP.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/001.Matrix/MVP/MVP.mat -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/MVP.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c3caed37ffe7ed449a648937223448b 3 | timeCreated: 1460562984 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/MVP.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/MVP" { 2 | Properties{ 3 | _Color("Color",COLOR) = (1,1,1,1) 4 | } 5 | SubShader { 6 | Pass{ 7 | CGPROGRAM 8 | #pragma vertex vert 9 | #pragma fragment frag 10 | 11 | struct app_data { 12 | float4 vertex:POSITION; 13 | }; 14 | 15 | struct v2f { 16 | float4 position:SV_POSITION; 17 | }; 18 | 19 | uniform float4x4 mvp_matrix; 20 | uniform float4x4 mv_matrix; 21 | uniform float4x4 v_matrix; 22 | 23 | float4 _Color; 24 | 25 | v2f vert(app_data i) { 26 | v2f o; 27 | o.position = mul(mvp_matrix, i.vertex); 28 | return o; 29 | } 30 | 31 | float4 frag(v2f i) :SV_TARGET{ 32 | return _Color; 33 | } 34 | 35 | ENDCG 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/MVP.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c02b366162da3ab4b92ecf1d95fb80c7 3 | timeCreated: 1460561645 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/MVP.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/001.Matrix/MVP/MVP.unity -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/MVP.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1a6051edd4c6cf94bac66e932d37709d 3 | timeCreated: 1460560910 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/read.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/001.Matrix/MVP/read.txt -------------------------------------------------------------------------------- /Assets/001.Matrix/MVP/read.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: edbb5dd1cabfd44449b76b1fbee072e2 3 | timeCreated: 1460566881 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8025f46eb76336f4f9ee3570c5562d5b 3 | folderAsset: yes 4 | timeCreated: 1460543925 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 912eda5c9ad349f4fa41e261e2e01105 3 | folderAsset: yes 4 | timeCreated: 1460541387 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/Lambert.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | [ExecuteInEditMode] 5 | public class Lambert : MonoBehaviour 6 | { 7 | [SerializeField] 8 | private Material lambert; 9 | 10 | [SerializeField] 11 | private Transform lightTransform; 12 | 13 | [SerializeField] 14 | private float k_diffuse; 15 | 16 | [SerializeField] 17 | private float k_ambient; 18 | 19 | public void Update() 20 | { 21 | Vector4 lightPos = lightTransform.position; 22 | 23 | lambert.SetVector("light_pos", lightPos); 24 | lambert.SetFloat("k_diffuse", k_diffuse); 25 | lambert.SetFloat("k_ambient", k_ambient); 26 | } 27 | } -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/Lambert.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fada70c1f70d54a449cbd5fe1ae749d5 3 | timeCreated: 1460563488 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: 8 | - lambert: {fileID: 2100000, guid: b01a95125e2583e47871e92f98703889, type: 2} 9 | - lightTransform: {instanceID: 0} 10 | executionOrder: 0 11 | icon: {instanceID: 0} 12 | userData: 13 | assetBundleName: 14 | assetBundleVariant: 15 | -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/Lambert.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/001.Lambert/Lambert.mat -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/Lambert.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b01a95125e2583e47871e92f98703889 3 | timeCreated: 1460543201 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/Lambert.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Custom/Lambert"{ 4 | Properties{ 5 | _Color("Color", COLOR) = (1,1,1,1) 6 | } 7 | SubShader{ 8 | Pass{ 9 | CGPROGRAM 10 | #pragma vertex vert 11 | #pragma fragment frag 12 | struct app_data { 13 | float4 vertex:POSITION; 14 | float3 normal:NORMAL; 15 | }; 16 | struct v2f { 17 | float4 vertex:SV_POSITION; 18 | float4 color:COLOR0; 19 | }; 20 | 21 | uniform float4 light_pos; 22 | uniform float k_diffuse; 23 | uniform float k_ambient; 24 | 25 | float4 _Color; 26 | 27 | v2f vert(app_data i) { 28 | v2f o; 29 | float3 vs_normal = mul(UNITY_MATRIX_IT_MV, float4(i.normal, 1)); //http://raytracing.hatenablog.com/entry/20130325/1364229762 30 | float3 vs_light = mul(UNITY_MATRIX_V, light_pos); 31 | float3 vs_pos = mul(UNITY_MATRIX_MV, i.vertex); 32 | float3 vs_l = normalize(vs_light - vs_pos); 33 | 34 | float r_diffuse = k_diffuse*max(dot(vs_normal, vs_l), 0); 35 | 36 | o.vertex = UnityObjectToClipPos(i.vertex); 37 | o.color = _Color * r_diffuse + k_ambient; 38 | return o; 39 | } 40 | 41 | float4 frag(v2f i) :SV_TARGET{ 42 | return i.color; 43 | } 44 | ENDCG 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/Lambert.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3a3ddc5f82f51f46811e30fac8386a4 3 | timeCreated: 1460541952 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/Lambert.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/001.Lambert/Lambert.unity -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/Lambert.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 192d208bc4faa5f458669d44655b566d 3 | timeCreated: 1460546158 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/read.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/001.Lambert/read.txt -------------------------------------------------------------------------------- /Assets/002.Shading/001.Lambert/read.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2677bee74facb34885e30bde98cf99c 3 | timeCreated: 1460567698 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe92568d1cef8ba4c8a05aaf5881f1ec 3 | folderAsset: yes 4 | timeCreated: 1460607746 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/Phong.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | [ExecuteInEditMode] 5 | public class Phong : MonoBehaviour 6 | { 7 | [SerializeField] 8 | private Material specular; 9 | 10 | [SerializeField] 11 | private Transform lightTransform; 12 | 13 | [SerializeField] 14 | private float k_diffuse; 15 | 16 | [SerializeField] 17 | private float k_ambient; 18 | 19 | [SerializeField] 20 | private float k_specular; 21 | 22 | [SerializeField] 23 | private float shininess; 24 | 25 | public void Update() 26 | { 27 | Vector4 lightPos = lightTransform.position; 28 | 29 | specular.SetVector("light_pos", lightPos); 30 | specular.SetFloat("k_diffuse", k_diffuse); 31 | specular.SetFloat("k_ambient", k_ambient); 32 | specular.SetFloat("k_specular", k_specular); 33 | specular.SetFloat("shininess", shininess); 34 | } 35 | } -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/Phong.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0bf63c7130df9e44a1c2cebe33524ab 3 | timeCreated: 1460607983 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/Phong.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/002.Phong/Phong.mat -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/Phong.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4e3a3a308de3d9d428f10a62de0c7111 3 | timeCreated: 1460607952 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/Phong.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Custom/Phong"{ 4 | Properties{ 5 | _DiffuseColor("Diffuse Color", COLOR) = (1,1,1,1) 6 | _SpecularColor("Specular Color", COLOR) = (1,1,1,1) 7 | } 8 | SubShader{ 9 | Pass{ 10 | CGPROGRAM 11 | #pragma vertex vert 12 | #pragma fragment frag 13 | struct app_data { 14 | float4 vertex:POSITION; 15 | float3 normal:NORMAL; 16 | }; 17 | struct v2f { 18 | float4 vertex:SV_POSITION; 19 | float4 color:COLOR0; 20 | }; 21 | 22 | uniform float4 light_pos; 23 | uniform float4 camera_pos; 24 | uniform float k_diffuse; 25 | uniform float k_ambient; 26 | uniform float k_specular; 27 | uniform float shininess; 28 | 29 | float4 _DiffuseColor; 30 | float4 _SpecularColor; 31 | 32 | v2f vert(app_data i) { 33 | v2f o; 34 | float3 vs_normal = mul(UNITY_MATRIX_IT_MV, float4(i.normal, 1)); //http://raytracing.hatenablog.com/entry/20130325/1364229762 35 | float3 vs_light = mul(UNITY_MATRIX_V, light_pos); 36 | float3 vs_camera = mul(UNITY_MATRIX_V, camera_pos); 37 | float3 vs_pos = mul(UNITY_MATRIX_MV, i.vertex); 38 | float3 vs_l = normalize(vs_light - vs_pos); 39 | 40 | float r_diffuse = k_diffuse * max(dot(vs_normal, vs_l), 0); 41 | 42 | float3 vs_v = normalize(vs_camera - vs_pos); 43 | float3 vs_h = normalize(vs_l + vs_v); 44 | 45 | float r_specular = k_specular * pow(max(dot(vs_normal, vs_h), 0),shininess); 46 | 47 | o.vertex = UnityObjectToClipPos(i.vertex); 48 | o.color = r_diffuse * _DiffuseColor + r_specular * _SpecularColor + k_ambient; 49 | return o; 50 | } 51 | 52 | float4 frag(v2f i) :SV_TARGET{ 53 | return i.color; 54 | } 55 | ENDCG 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/Phong.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b89053dd834a60948b14d5ec877ac515 3 | timeCreated: 1460607877 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/Phong.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/002.Phong/Phong.unity -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/Phong.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dedebb6187e89c943bedc97444aa7429 3 | timeCreated: 1460607937 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/read.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/002.Phong/read.txt -------------------------------------------------------------------------------- /Assets/002.Shading/002.Phong/read.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 066c001c523e29f46945996bac0ddb68 3 | timeCreated: 1460607863 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35c3bc1e1e27b2e48b9e2ef59d27cc31 3 | folderAsset: yes 4 | timeCreated: 1460610958 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | [ExecuteInEditMode] 5 | public class PerPixelPhongShader : MonoBehaviour 6 | { 7 | [SerializeField] 8 | private Material specular; 9 | 10 | [SerializeField] 11 | private Transform lightTransform; 12 | 13 | [SerializeField] 14 | private float k_diffuse; 15 | 16 | [SerializeField] 17 | private float k_ambient; 18 | 19 | [SerializeField] 20 | private float k_specular; 21 | 22 | [SerializeField] 23 | private float shininess; 24 | 25 | public void Update() 26 | { 27 | Vector4 lightPos = lightTransform.position; 28 | 29 | specular.SetVector("light_pos", lightPos); 30 | specular.SetFloat("k_diffuse", k_diffuse); 31 | specular.SetFloat("k_ambient", k_ambient); 32 | specular.SetFloat("k_specular", k_specular); 33 | specular.SetFloat("shininess", shininess); 34 | } 35 | } -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4b2cec17e6ac2b8408c22b1ec0d93341 3 | timeCreated: 1460612212 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.mat -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac12ef1dbf65bed499855866ad9e63d8 3 | timeCreated: 1460612238 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Custom/PerPixelPhongShader"{ 4 | Properties{ 5 | _DiffuseColor("Diffuse Color", COLOR) = (1,1,1,1) 6 | _SpecularColor("Specular Color", COLOR) = (1,1,1,1) 7 | } 8 | SubShader{ 9 | Pass{ 10 | CGPROGRAM 11 | #pragma vertex vert 12 | #pragma fragment frag 13 | struct app_data { 14 | float4 vertex:POSITION; 15 | float3 normal:NORMAL; 16 | }; 17 | struct v2f { 18 | float4 vertex:SV_POSITION; 19 | float4 position:TEXCOORD0; 20 | float4 normal:TEXCOORD1; 21 | }; 22 | 23 | uniform float4 light_pos; 24 | uniform float4 camera_pos; 25 | uniform float k_diffuse; 26 | uniform float k_ambient; 27 | uniform float k_specular; 28 | uniform float shininess; 29 | 30 | float4 _DiffuseColor; 31 | float4 _SpecularColor; 32 | 33 | v2f vert(app_data i) { 34 | v2f o; 35 | 36 | o.vertex = UnityObjectToClipPos(i.vertex); 37 | o.position = i.vertex; 38 | 39 | o.normal = mul(UNITY_MATRIX_IT_MV, float4(i.normal, 1)); 40 | 41 | return o; 42 | } 43 | 44 | float4 frag(v2f i) :SV_TARGET{ 45 | float3 vs_light = mul(UNITY_MATRIX_V, light_pos).xyz; 46 | float3 vs_pos = mul(UNITY_MATRIX_MV, i.position).xyz; 47 | float3 vs_camera = mul(UNITY_MATRIX_V, camera_pos).xyz; 48 | 49 | float3 vs_n = normalize(i.normal.xyz); 50 | float3 vs_l = normalize(vs_light - vs_pos); 51 | float3 vs_v = normalize(vs_camera - vs_pos); 52 | float3 vs_h = normalize(vs_l + vs_v); 53 | 54 | float r_diffuse = k_diffuse * max(dot(vs_n, vs_l), 0); 55 | 56 | float r_specular = k_specular * pow(max(dot(vs_n, vs_h), 0),shininess); 57 | 58 | return r_diffuse * _DiffuseColor + r_specular * _SpecularColor + k_ambient; 59 | } 60 | ENDCG 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d477a4f8fc19b8b40bea50762a714add 3 | timeCreated: 1460612257 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.unity -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/PerPixelPhongShader.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac3f6448890b13948b2cedd2c55b300f 3 | timeCreated: 1460612171 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/read.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/003.PerPixelPhongShader/read.txt -------------------------------------------------------------------------------- /Assets/002.Shading/003.PerPixelPhongShader/read.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ad04aaacb3622c47bcfb6530aee4910 3 | timeCreated: 1460612144 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dc5fa8a2dad419544b7950eb21e9464b 3 | folderAsset: yes 4 | timeCreated: 1461125179 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | [ExecuteInEditMode] 5 | public class PerPixelCookTorranceShader : MonoBehaviour 6 | { 7 | [SerializeField] 8 | private Material specular; 9 | 10 | [SerializeField] 11 | private Transform lightTransform; 12 | 13 | [SerializeField] 14 | private float k_diffuse; 15 | 16 | [SerializeField] 17 | private float k_ambient; 18 | 19 | [SerializeField] 20 | private float k_specular; 21 | 22 | [SerializeField] 23 | private float roughness; 24 | 25 | [SerializeField] 26 | private float complexRefractiveIndex; 27 | 28 | public void Update() 29 | { 30 | Vector4 lightPos = lightTransform.position; 31 | 32 | specular.SetVector("light_pos", lightPos); 33 | specular.SetFloat("k_diffuse", k_diffuse); 34 | specular.SetFloat("k_ambient", k_ambient); 35 | specular.SetFloat("k_specular", k_specular); 36 | specular.SetFloat("roughness", roughness); 37 | specular.SetFloat("complex_refractive_index", complexRefractiveIndex); 38 | } 39 | } -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd93c609b5c1dfa4190301fc219c75b5 3 | timeCreated: 1461128765 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.mat -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba3ff92a208640f4689a147f57a53211 3 | timeCreated: 1461216408 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Custom/PerPixelCookTorranceShader" 4 | { 5 | Properties{ 6 | _DiffuseColor("Diffuse Color", COLOR) = (1,1,1,1) 7 | _SpecularColor("Specular Color", COLOR) = (1,1,1,1) 8 | } 9 | 10 | SubShader{ 11 | Pass{ 12 | CGPROGRAM 13 | #pragma vertex vert 14 | #pragma fragment frag 15 | 16 | struct app_data { 17 | float4 vertex : POSITION; 18 | float3 normal : NORMAL; 19 | }; 20 | 21 | struct v2f { 22 | float4 pos : SV_POSITION; 23 | float4 local_pos : TEXCOORD0; 24 | float4 normal : TEXCOORD1; 25 | }; 26 | 27 | uniform float4 light_pos; 28 | uniform float4 camera_pos; 29 | uniform float k_diffuse; 30 | uniform float k_ambient; 31 | uniform float k_specular; 32 | uniform float roughness; 33 | uniform float complex_refractive_index; 34 | 35 | float4 _DiffuseColor; 36 | float4 _SpecularColor; 37 | 38 | float normal_distribution_function(float d) { 39 | return 1 / roughness + roughness * pow(cos(d), 4) * exp(-pow((tan(d) / roughness), 2)); 40 | } 41 | float geometric_attenuation_coefficient(float3 n, float3 v, float3 h, float3 l) { 42 | float g_out = 2 * dot(n, h) * dot(n, v) / dot(v, h); 43 | float g_in = 2 * dot(n, h) * dot(n, l) / dot(v, h); 44 | return min(min(g_in, g_out), 1); 45 | } 46 | 47 | float fresnel_reflection_coefficient(float phi, float eta) { 48 | float c = cos(phi); 49 | float zeta = sqrt(eta * eta + c * c - 1); 50 | float zpc = zeta + c; 51 | float zmc = zeta - c; 52 | return zmc*zmc / zpc*zpc * (1 - (c*zpc - 1)*(c*zpc - 1) / (c*zmc + 1)*(c*zmc + 1)); 53 | } 54 | 55 | v2f vert(app_data i) { 56 | v2f o; 57 | o.pos = UnityObjectToClipPos(i.vertex); 58 | o.local_pos = i.vertex; 59 | o.normal = mul(UNITY_MATRIX_IT_MV, float4(i.normal, 1)); 60 | return o; 61 | } 62 | 63 | float4 frag(v2f i) : SV_TARGET{ 64 | float3 vs_light_pos = mul(UNITY_MATRIX_V, light_pos).xyz; 65 | float3 vs_pos = mul(UNITY_MATRIX_MV, i.local_pos).xyz; 66 | float3 vs_camera_pos = mul(UNITY_MATRIX_V, camera_pos).xyz; 67 | 68 | float3 vs_n = normalize(i.normal.xyz); 69 | float3 vs_l = normalize(vs_light_pos - vs_pos); 70 | float3 vs_v = normalize(vs_camera_pos - vs_pos); 71 | float3 vs_h = normalize(vs_l + vs_v); 72 | 73 | float r_diffuse = k_diffuse * max(dot(vs_n, vs_l), 0); 74 | 75 | float D = normal_distribution_function(dot(vs_n, vs_h)); 76 | float G = geometric_attenuation_coefficient(vs_n, vs_v, vs_h, vs_l); 77 | float F = fresnel_reflection_coefficient(dot(vs_n, vs_l), complex_refractive_index); 78 | 79 | float r_specular = k_specular * D * F * G / dot(vs_n, vs_v); 80 | 81 | return r_diffuse * _DiffuseColor + r_specular * _SpecularColor + k_ambient; 82 | } 83 | 84 | 85 | ENDCG 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9d4648a88796fa44c863519ddbce03eb 3 | timeCreated: 1461127558 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.unity -------------------------------------------------------------------------------- /Assets/002.Shading/004.PerPixelCook-TorranceShader/PerPixelCookTorranceShader.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9be4585971af1424a9ac8a103ce73f6e 3 | timeCreated: 1461216359 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 569647add25df204f99a8ff512570bdc 3 | folderAsset: yes 4 | timeCreated: 1462024258 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/BumpMapShader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | [ExecuteInEditMode] 5 | public class BumpMapShader : MonoBehaviour 6 | { 7 | [SerializeField] 8 | private Material bump; 9 | 10 | [SerializeField] 11 | private Transform lightTransform; 12 | 13 | [SerializeField] 14 | private float k_diffuse; 15 | 16 | public void Update() 17 | { 18 | Vector4 lightPos = lightTransform.position; 19 | 20 | bump.SetVector("light_pos", lightPos); 21 | bump.SetFloat("k_diffuse", k_diffuse); 22 | } 23 | } -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/BumpMapShader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 620ab6e181789374f9a3096ea93b36d4 3 | timeCreated: 1462024258 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/BumpMapShader.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/005.BumpMapShader/BumpMapShader.mat -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/BumpMapShader.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 09799f4d1085d94499ad9345adbb616d 3 | timeCreated: 1462024258 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/BumpMapShader.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/005.BumpMapShader/BumpMapShader.unity -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/BumpMapShader.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2f5c74cc1f614b144ba7a7a7b02fd441 3 | timeCreated: 1462024258 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/BumpShader.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' 4 | 5 | Shader "Custom/BumpMapShader"{ 6 | Properties{ 7 | _BumpMap("BumpMap", 2D) = "white" {} 8 | _DiffuseColor("Diffuse Color", COLOR) = (1,1,1,1) 9 | 10 | } 11 | SubShader{ 12 | Pass{ 13 | CGPROGRAM 14 | #pragma vertex vert 15 | #pragma fragment frag 16 | #include "UnityCG.cginc" 17 | struct app_data { 18 | float4 vertex:POSITION; 19 | float3 normal:NORMAL; 20 | float2 texcoord:TEXCOORD0; 21 | float4 tangent:TANGENT0; 22 | }; 23 | struct v2f { 24 | float4 screen:SV_POSITION; 25 | float2 uv : TEXCOORD0; 26 | float4 tangentLightDir : TEXCOORD1; 27 | }; 28 | 29 | sampler2D _BumpMap; 30 | uniform float4 light_pos; 31 | uniform float k_diffuse; 32 | uniform float k_ambient; 33 | 34 | float4 _DiffuseColor; 35 | float4 _SpecularColor; 36 | 37 | float4x4 InvTangentMatrix( 38 | float3 t, 39 | float3 b, 40 | float3 n) 41 | { 42 | float4x4 mat = float4x4( 43 | float4(t.x, t.y, t.z, 0), 44 | float4(b.x, b.y, b.z, 0), 45 | float4(n.x, n.y, n.z, 0), 46 | float4(0, 0, 0, 1) 47 | ); 48 | return transpose(mat); 49 | } 50 | 51 | v2f vert(app_data i) { 52 | v2f o; 53 | o.screen = UnityObjectToClipPos(i.vertex); 54 | o.uv = i.texcoord; 55 | 56 | float4 ms_normal = normalize(mul(i.normal, unity_WorldToObject)); 57 | 58 | float3 n = normalize(ms_normal); 59 | float3 t = i.tangent; 60 | float3 b = cross(n, t); 61 | 62 | o.tangentLightDir = mul(light_pos, InvTangentMatrix(t, b, n)); 63 | return o; 64 | } 65 | 66 | float4 frag(v2f i) :SV_TARGET{ 67 | //float3 normal = normalize(tex2D(_BumpMap, i.uv).xyz * 2.0 - 1.0); 68 | float3 normal = float4(UnpackNormal(tex2D(_BumpMap, i.uv)),1); 69 | float3 light = normalize(i.tangentLightDir.xyz); 70 | float diffuse = max(0, dot(normal, light)) * k_diffuse; 71 | return diffuse * _DiffuseColor + k_ambient; 72 | } 73 | ENDCG 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/BumpShader.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 440088fde1e89644784b58f6c52dbe2f 3 | timeCreated: 1462024258 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/bamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/005.BumpMapShader/bamp.png -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/bamp.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6121ffa5a8a6d234aad22c6040ab981f 3 | timeCreated: 1462024595 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 2 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | linearTexture: 1 12 | correctGamma: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 1 19 | externalNormalMap: 1 20 | heightScale: 0.3 21 | normalMapFilter: 1 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 0 25 | cubemapConvolution: 0 26 | cubemapConvolutionSteps: 7 27 | cubemapConvolutionExponent: 1.5 28 | seamlessCubemap: 0 29 | textureFormat: -1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | filterMode: -1 33 | aniso: -1 34 | mipBias: -1 35 | wrapMode: 1 36 | nPOTScale: 1 37 | lightmap: 0 38 | rGBM: 0 39 | compressionQuality: 50 40 | allowsAlphaSplitting: 0 41 | spriteMode: 0 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 47 | spritePixelsToUnits: 100 48 | alphaIsTransparency: 0 49 | textureType: 1 50 | buildTargetSettings: [] 51 | spriteSheet: 52 | sprites: [] 53 | outline: [] 54 | spritePackingTag: 55 | userData: 56 | assetBundleName: 57 | assetBundleVariant: 58 | -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/read.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/005.BumpMapShader/read.txt -------------------------------------------------------------------------------- /Assets/002.Shading/005.BumpMapShader/read.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 252d4e158b2410a4e8564f2be2cbb45d 3 | timeCreated: 1462024258 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2578728a70948438baab96ba67ccf6e9 3 | folderAsset: yes 4 | timeCreated: 1460541387 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/OrenNayar.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | [ExecuteInEditMode] 5 | public class OrenNayar : MonoBehaviour 6 | { 7 | [SerializeField] 8 | private Material lambert; 9 | 10 | [SerializeField] 11 | private Transform lightTransform; 12 | 13 | [SerializeField] 14 | private float k_diffuse; 15 | 16 | [SerializeField] 17 | private float k_ambient; 18 | [SerializeField] 19 | private float roughness; 20 | 21 | public void Update() 22 | { 23 | Vector4 lightPos = lightTransform.position; 24 | 25 | lambert.SetVector("light_pos", lightPos); 26 | lambert.SetFloat("k_diffuse", k_diffuse); 27 | lambert.SetFloat("k_ambient", k_ambient); 28 | lambert.SetFloat("roughness", roughness); 29 | } 30 | } -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/OrenNayar.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5eb57db4387f649088f4a2cac8e061b4 3 | timeCreated: 1460563488 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: 8 | - lambert: {fileID: 2100000, guid: b01a95125e2583e47871e92f98703889, type: 2} 9 | - lightTransform: {instanceID: 0} 10 | executionOrder: 0 11 | icon: {instanceID: 0} 12 | userData: 13 | assetBundleName: 14 | assetBundleVariant: 15 | -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/OrenNayar.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/006.OrenNayar/OrenNayar.mat -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/OrenNayar.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c162a27b600e54024b1075fdc0154207 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/OrenNayar.shader: -------------------------------------------------------------------------------- 1 | // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' 2 | 3 | Shader "Custom/OrenNayar"{ 4 | Properties{ 5 | _Color("Color", COLOR) = (1,1,1,1) 6 | } 7 | SubShader{ 8 | Pass{ 9 | CGPROGRAM 10 | #pragma vertex vert 11 | #pragma fragment frag 12 | struct app_data { 13 | float4 vertex:POSITION; 14 | float3 normal:NORMAL; 15 | }; 16 | struct v2f { 17 | float4 vertex:SV_POSITION; 18 | float4 color:COLOR0; 19 | }; 20 | 21 | uniform float4 light_pos; 22 | uniform float4 camera_pos; 23 | uniform float k_diffuse; 24 | uniform float k_ambient; 25 | uniform float roughness; 26 | 27 | float4 _Color; 28 | 29 | v2f vert(app_data i) { 30 | v2f o; 31 | float3 vs_normal = mul(UNITY_MATRIX_IT_MV, float4(i.normal, 1)); 32 | float3 vs_pos = mul(UNITY_MATRIX_MV, i.vertex); 33 | float3 vs_light_pos = mul(UNITY_MATRIX_V, light_pos); 34 | float3 vs_camera_pos = mul(UNITY_MATRIX_V, camera_pos).xyz; 35 | float3 vs_n = normalize(vs_normal); 36 | float3 vs_l = normalize(vs_light_pos - vs_pos); 37 | float3 vs_v = normalize(vs_camera_pos - vs_pos); 38 | 39 | float rough = roughness * roughness; 40 | float A = 1 - 0.5 * rough / (rough + 0.33); 41 | float B = 0.45 * rough / (rough + 0.09); 42 | float L = saturate(dot(vs_n, vs_l)); 43 | float V = saturate(dot(vs_n, vs_v)); 44 | float C = sqrt((1 - L * L) * (1 - V * V)) / max(L, V); 45 | float P = saturate(dot(normalize(vs_l - vs_n * L), normalize(vs_v - vs_n * V))); 46 | 47 | float r_diffuse = k_diffuse * L * (A + B * (P * C)); 48 | 49 | o.vertex = UnityObjectToClipPos(i.vertex); 50 | o.color = _Color * r_diffuse + k_ambient; 51 | return o; 52 | } 53 | 54 | float4 frag(v2f i) :SV_TARGET{ 55 | return i.color; 56 | } 57 | ENDCG 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/OrenNayar.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81e6491b9c00843e8b0331e62a09df14 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/OrenNayar.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/006.OrenNayar/OrenNayar.unity -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/OrenNayar.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb0a68f48cdce4e1e9b50b931a598720 3 | timeCreated: 1460546158 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/read.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/006.OrenNayar/read.txt -------------------------------------------------------------------------------- /Assets/002.Shading/006.OrenNayar/read.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 360d391e990d844b1a09de5095a170ca 3 | timeCreated: 1460567698 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/007.SphericalGaussian01.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a8583c9118d5d444a86c761891be4115 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/007.SphericalGaussian01/Gause.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Gause 10 | m_Shader: {fileID: 4800000, guid: 0c751d0aef3ed452da290ec21356786b, type: 3} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _MainTex: 22 | m_Texture: {fileID: 2800000, guid: 278679df2c4884b50af2883a22f59d17, type: 3} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | m_Floats: 26 | - _N: 5 27 | - _U: 1 28 | m_Colors: [] 29 | -------------------------------------------------------------------------------- /Assets/002.Shading/007.SphericalGaussian01/Gause.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc8f20586a50246869204c448647584d 3 | timeCreated: 1521468626 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/002.Shading/007.SphericalGaussian01/Gause.shader: -------------------------------------------------------------------------------- 1 | Shader "Unlit/Gause" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Texture", 2D) = "white" {} 6 | _N ("n", Float) = 1 7 | _U ("u", Float) = 1 8 | } 9 | SubShader 10 | { 11 | Tags { "RenderType"="Opaque" } 12 | LOD 100 13 | 14 | Pass 15 | { 16 | CGPROGRAM 17 | #pragma vertex vert 18 | #pragma fragment frag 19 | 20 | #include "UnityCG.cginc" 21 | 22 | struct appdata 23 | { 24 | float4 vertex : POSITION; 25 | float2 uv : TEXCOORD0; 26 | float3 n : NORMAL; 27 | }; 28 | 29 | struct v2f 30 | { 31 | float2 uv : TEXCOORD0; 32 | float4 vertex : SV_POSITION; 33 | float3 n : TEXCOORD1; 34 | }; 35 | 36 | sampler2D _MainTex; 37 | float4 _MainTex_ST; 38 | float _N; 39 | float _U; 40 | 41 | float3 Hue( float hue ) 42 | { 43 | float3 rgb = frac(hue + float3(0, 0.667, 0.334)); 44 | rgb = abs(rgb * 2 - 1); 45 | return clamp(rgb * 3 - 1, 0, 1); 46 | } 47 | 48 | float SphericalGaussian(float3 w, float3 e, float n, float u) 49 | { 50 | return u * exp(max(n, 0.001) * (dot(e, w) - 1)); 51 | } 52 | 53 | v2f vert (appdata v) 54 | { 55 | v2f o; 56 | o.vertex = UnityObjectToClipPos(v.vertex); 57 | o.uv = TRANSFORM_TEX(v.uv, _MainTex); 58 | o.n = UnityObjectToWorldNormal(v.n); 59 | return o; 60 | } 61 | 62 | fixed4 frag (v2f i) : SV_Target 63 | { 64 | float g = SphericalGaussian(normalize(i.n), float3(0, 1, 0), _N, _U); 65 | //float3 h = clamp(tex2D(_MainTex, float2(g, 1 - g)), 0, 1); 66 | float3 h = clamp(Hue(g), 0, 1); 67 | return float4(h.x, h.y, h.z, 1); 68 | } 69 | ENDCG 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Assets/002.Shading/007.SphericalGaussian01/Gause.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0c751d0aef3ed452da290ec21356786b 3 | timeCreated: 1521468017 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/002.Shading/007.SphericalGaussian01/Gause.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 8 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.44657868, g: 0.49641263, b: 0.5748171, a: 1} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 1 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_ShowResolutionOverlay: 1 92 | m_LightingDataAsset: {fileID: 0} 93 | m_UseShadowmask: 1 94 | --- !u!196 &4 95 | NavMeshSettings: 96 | serializedVersion: 2 97 | m_ObjectHideFlags: 0 98 | m_BuildSettings: 99 | serializedVersion: 2 100 | agentTypeID: 0 101 | agentRadius: 0.5 102 | agentHeight: 2 103 | agentSlope: 45 104 | agentClimb: 0.4 105 | ledgeDropHeight: 0 106 | maxJumpAcrossDistance: 0 107 | minRegionArea: 2 108 | manualCellSize: 0 109 | cellSize: 0.16666667 110 | manualTileSize: 0 111 | tileSize: 256 112 | accuratePlacement: 0 113 | debug: 114 | m_Flags: 0 115 | m_NavMeshData: {fileID: 0} 116 | --- !u!1 &356256851 117 | GameObject: 118 | m_ObjectHideFlags: 0 119 | m_PrefabParentObject: {fileID: 0} 120 | m_PrefabInternal: {fileID: 0} 121 | serializedVersion: 5 122 | m_Component: 123 | - component: {fileID: 356256855} 124 | - component: {fileID: 356256854} 125 | - component: {fileID: 356256853} 126 | - component: {fileID: 356256852} 127 | m_Layer: 0 128 | m_Name: Sphere 129 | m_TagString: Untagged 130 | m_Icon: {fileID: 0} 131 | m_NavMeshLayer: 0 132 | m_StaticEditorFlags: 0 133 | m_IsActive: 1 134 | --- !u!23 &356256852 135 | MeshRenderer: 136 | m_ObjectHideFlags: 0 137 | m_PrefabParentObject: {fileID: 0} 138 | m_PrefabInternal: {fileID: 0} 139 | m_GameObject: {fileID: 356256851} 140 | m_Enabled: 1 141 | m_CastShadows: 1 142 | m_ReceiveShadows: 1 143 | m_DynamicOccludee: 1 144 | m_MotionVectors: 1 145 | m_LightProbeUsage: 1 146 | m_ReflectionProbeUsage: 1 147 | m_Materials: 148 | - {fileID: 2100000, guid: fc8f20586a50246869204c448647584d, type: 2} 149 | m_StaticBatchInfo: 150 | firstSubMesh: 0 151 | subMeshCount: 0 152 | m_StaticBatchRoot: {fileID: 0} 153 | m_ProbeAnchor: {fileID: 0} 154 | m_LightProbeVolumeOverride: {fileID: 0} 155 | m_ScaleInLightmap: 1 156 | m_PreserveUVs: 1 157 | m_IgnoreNormalsForChartDetection: 0 158 | m_ImportantGI: 0 159 | m_StitchLightmapSeams: 0 160 | m_SelectedEditorRenderState: 3 161 | m_MinimumChartSize: 4 162 | m_AutoUVMaxDistance: 0.5 163 | m_AutoUVMaxAngle: 89 164 | m_LightmapParameters: {fileID: 0} 165 | m_SortingLayerID: 0 166 | m_SortingLayer: 0 167 | m_SortingOrder: 0 168 | --- !u!135 &356256853 169 | SphereCollider: 170 | m_ObjectHideFlags: 0 171 | m_PrefabParentObject: {fileID: 0} 172 | m_PrefabInternal: {fileID: 0} 173 | m_GameObject: {fileID: 356256851} 174 | m_Material: {fileID: 0} 175 | m_IsTrigger: 0 176 | m_Enabled: 1 177 | serializedVersion: 2 178 | m_Radius: 0.5 179 | m_Center: {x: 0, y: 0, z: 0} 180 | --- !u!33 &356256854 181 | MeshFilter: 182 | m_ObjectHideFlags: 0 183 | m_PrefabParentObject: {fileID: 0} 184 | m_PrefabInternal: {fileID: 0} 185 | m_GameObject: {fileID: 356256851} 186 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 187 | --- !u!4 &356256855 188 | Transform: 189 | m_ObjectHideFlags: 0 190 | m_PrefabParentObject: {fileID: 0} 191 | m_PrefabInternal: {fileID: 0} 192 | m_GameObject: {fileID: 356256851} 193 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 194 | m_LocalPosition: {x: 0, y: 0, z: 0} 195 | m_LocalScale: {x: 6, y: 6, z: 6} 196 | m_Children: [] 197 | m_Father: {fileID: 0} 198 | m_RootOrder: 2 199 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 200 | --- !u!1 &701393099 201 | GameObject: 202 | m_ObjectHideFlags: 0 203 | m_PrefabParentObject: {fileID: 0} 204 | m_PrefabInternal: {fileID: 0} 205 | serializedVersion: 5 206 | m_Component: 207 | - component: {fileID: 701393103} 208 | - component: {fileID: 701393102} 209 | - component: {fileID: 701393101} 210 | - component: {fileID: 701393100} 211 | m_Layer: 0 212 | m_Name: Main Camera 213 | m_TagString: MainCamera 214 | m_Icon: {fileID: 0} 215 | m_NavMeshLayer: 0 216 | m_StaticEditorFlags: 0 217 | m_IsActive: 1 218 | --- !u!81 &701393100 219 | AudioListener: 220 | m_ObjectHideFlags: 0 221 | m_PrefabParentObject: {fileID: 0} 222 | m_PrefabInternal: {fileID: 0} 223 | m_GameObject: {fileID: 701393099} 224 | m_Enabled: 1 225 | --- !u!124 &701393101 226 | Behaviour: 227 | m_ObjectHideFlags: 0 228 | m_PrefabParentObject: {fileID: 0} 229 | m_PrefabInternal: {fileID: 0} 230 | m_GameObject: {fileID: 701393099} 231 | m_Enabled: 1 232 | --- !u!20 &701393102 233 | Camera: 234 | m_ObjectHideFlags: 0 235 | m_PrefabParentObject: {fileID: 0} 236 | m_PrefabInternal: {fileID: 0} 237 | m_GameObject: {fileID: 701393099} 238 | m_Enabled: 1 239 | serializedVersion: 2 240 | m_ClearFlags: 1 241 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 242 | m_NormalizedViewPortRect: 243 | serializedVersion: 2 244 | x: 0 245 | y: 0 246 | width: 1 247 | height: 1 248 | near clip plane: 0.3 249 | far clip plane: 1000 250 | field of view: 60 251 | orthographic: 0 252 | orthographic size: 5 253 | m_Depth: -1 254 | m_CullingMask: 255 | serializedVersion: 2 256 | m_Bits: 4294967295 257 | m_RenderingPath: -1 258 | m_TargetTexture: {fileID: 0} 259 | m_TargetDisplay: 0 260 | m_TargetEye: 3 261 | m_HDR: 1 262 | m_AllowMSAA: 1 263 | m_AllowDynamicResolution: 0 264 | m_ForceIntoRT: 0 265 | m_OcclusionCulling: 1 266 | m_StereoConvergence: 10 267 | m_StereoSeparation: 0.022 268 | --- !u!4 &701393103 269 | Transform: 270 | m_ObjectHideFlags: 0 271 | m_PrefabParentObject: {fileID: 0} 272 | m_PrefabInternal: {fileID: 0} 273 | m_GameObject: {fileID: 701393099} 274 | m_LocalRotation: {x: 0.39842245, y: -0, z: -0, w: 0.91720206} 275 | m_LocalPosition: {x: 0, y: 4.78, z: -4.62} 276 | m_LocalScale: {x: 1, y: 1, z: 1} 277 | m_Children: [] 278 | m_Father: {fileID: 0} 279 | m_RootOrder: 0 280 | m_LocalEulerAnglesHint: {x: 46.959003, y: 0, z: 0} 281 | --- !u!1 &1950607279 282 | GameObject: 283 | m_ObjectHideFlags: 0 284 | m_PrefabParentObject: {fileID: 0} 285 | m_PrefabInternal: {fileID: 0} 286 | serializedVersion: 5 287 | m_Component: 288 | - component: {fileID: 1950607281} 289 | - component: {fileID: 1950607280} 290 | m_Layer: 0 291 | m_Name: Directional Light 292 | m_TagString: Untagged 293 | m_Icon: {fileID: 0} 294 | m_NavMeshLayer: 0 295 | m_StaticEditorFlags: 0 296 | m_IsActive: 1 297 | --- !u!108 &1950607280 298 | Light: 299 | m_ObjectHideFlags: 0 300 | m_PrefabParentObject: {fileID: 0} 301 | m_PrefabInternal: {fileID: 0} 302 | m_GameObject: {fileID: 1950607279} 303 | m_Enabled: 1 304 | serializedVersion: 8 305 | m_Type: 1 306 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 307 | m_Intensity: 1 308 | m_Range: 10 309 | m_SpotAngle: 30 310 | m_CookieSize: 10 311 | m_Shadows: 312 | m_Type: 2 313 | m_Resolution: -1 314 | m_CustomResolution: -1 315 | m_Strength: 1 316 | m_Bias: 0.05 317 | m_NormalBias: 0.4 318 | m_NearPlane: 0.2 319 | m_Cookie: {fileID: 0} 320 | m_DrawHalo: 0 321 | m_Flare: {fileID: 0} 322 | m_RenderMode: 0 323 | m_CullingMask: 324 | serializedVersion: 2 325 | m_Bits: 4294967295 326 | m_Lightmapping: 4 327 | m_AreaSize: {x: 1, y: 1} 328 | m_BounceIntensity: 1 329 | m_ColorTemperature: 6570 330 | m_UseColorTemperature: 0 331 | m_ShadowRadius: 0 332 | m_ShadowAngle: 0 333 | --- !u!4 &1950607281 334 | Transform: 335 | m_ObjectHideFlags: 0 336 | m_PrefabParentObject: {fileID: 0} 337 | m_PrefabInternal: {fileID: 0} 338 | m_GameObject: {fileID: 1950607279} 339 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 340 | m_LocalPosition: {x: 0, y: 3, z: 0} 341 | m_LocalScale: {x: 1, y: 1, z: 1} 342 | m_Children: [] 343 | m_Father: {fileID: 0} 344 | m_RootOrder: 1 345 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 346 | -------------------------------------------------------------------------------- /Assets/002.Shading/007.SphericalGaussian01/Gause.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4b7de822548d44b4d9966f0d4206be42 3 | timeCreated: 1521470111 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/002.Shading/008.SphericalGaussian02.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: acc63017692b44154be43fe8e60fb83c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/002.Shading/008.SphericalGaussian02/Gause.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Gause 10 | m_Shader: {fileID: 4800000, guid: dafec87b53b4240a1b73db9a34d24b1d, type: 3} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _MainTex: 22 | m_Texture: {fileID: 2800000, guid: 278679df2c4884b50af2883a22f59d17, type: 3} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | m_Floats: 26 | - _N: 1 27 | - _ND: 1 28 | - _NS: 5 29 | - _U: 1 30 | - _UD: 1 31 | - _US: 0.61 32 | m_Colors: [] 33 | -------------------------------------------------------------------------------- /Assets/002.Shading/008.SphericalGaussian02/Gause.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ae3a20c90afa46bf9abeb1cfcfd5dc9 3 | timeCreated: 1521468626 4 | licenseType: Free 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/002.Shading/008.SphericalGaussian02/Gause.shader: -------------------------------------------------------------------------------- 1 | Shader "Unlit/Gause" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Texture", 2D) = "white" {} 6 | _ND ("n_diffuse", Float) = 1 7 | _UD ("u_diffuse", Float) = 1 8 | _NS ("n_specular", Float) = 1 9 | _US ("u_specular", Float) = 1 10 | } 11 | SubShader 12 | { 13 | Tags { "RenderType"="Opaque" } 14 | LOD 100 15 | 16 | Pass 17 | { 18 | CGPROGRAM 19 | #pragma vertex vert 20 | #pragma fragment frag 21 | 22 | #include "UnityCG.cginc" 23 | 24 | struct appdata 25 | { 26 | float4 vertex : POSITION; 27 | float2 uv : TEXCOORD0; 28 | float3 n : NORMAL; 29 | }; 30 | 31 | struct v2f 32 | { 33 | float2 uv : TEXCOORD0; 34 | float4 vertex : SV_POSITION; 35 | float3 n : TEXCOORD1; 36 | float3 cam_pos_w : POSITION1; 37 | float3 vert_pos_w : POSITION2; 38 | float3 light_pos_w : POSITION3; 39 | }; 40 | 41 | sampler2D _MainTex; 42 | float4 _MainTex_ST; 43 | float _ND; 44 | float _NS; 45 | float _UD; 46 | float _US; 47 | 48 | float SphericalGaussian(float3 w, float3 e, float n, float u) 49 | { 50 | return u * exp(max(n, 0.001) * (dot(e, w) - 1)); 51 | } 52 | 53 | v2f vert (appdata v) 54 | { 55 | v2f o; 56 | o.vertex = UnityObjectToClipPos(v.vertex); 57 | o.uv = TRANSFORM_TEX(v.uv, _MainTex); 58 | o.n = normalize(UnityObjectToWorldNormal(v.n)); 59 | o.cam_pos_w = _WorldSpaceCameraPos; 60 | o.vert_pos_w = v.vertex; 61 | o.light_pos_w = normalize(float3(0, 1, 0)); 62 | return o; 63 | } 64 | 65 | fixed4 frag (v2f i) : SV_Target 66 | { 67 | float3 l = normalize(i.cam_pos_w - i.vert_pos_w); 68 | float diffuse = SphericalGaussian(i.n, i.light_pos_w, _ND, _UD); 69 | float specular = SphericalGaussian(i.n, l, _NS, _US); 70 | float combine = diffuse + specular; 71 | //return float4(diffuse, diffuse, diffuse, 1); 72 | //return float4(specular, specular, specular, 1); 73 | return float4(combine, combine, combine, 1); 74 | } 75 | ENDCG 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /Assets/002.Shading/008.SphericalGaussian02/Gause.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dafec87b53b4240a1b73db9a34d24b1d 3 | timeCreated: 1521468017 4 | licenseType: Free 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/002.Shading/008.SphericalGaussian02/Gause.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/002.Shading/008.SphericalGaussian02/Gause.unity -------------------------------------------------------------------------------- /Assets/002.Shading/008.SphericalGaussian02/Gause.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9b58085f92e9c445abcb6fec0fdd3235 3 | timeCreated: 1521470111 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/003.CulcUV.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ebe84024297b814bb29f6606b227430 3 | folderAsset: yes 4 | timeCreated: 1462549231 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/003.CulcUV/CulcUV.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | /// 5 | /// サーフェス上の点pからuvを算出する 6 | /// 7 | public class CulcUV : MonoBehaviour 8 | { 9 | private MeshFilter meshFilter; 10 | private Mesh mesh; 11 | 12 | private int index0; 13 | private int index1; 14 | private int index2; 15 | 16 | private Vector3 p1; 17 | private Vector3 p2; 18 | private Vector3 p3; 19 | private Vector3 p; 20 | 21 | private Vector3 v1; 22 | private Vector3 v2; 23 | private Vector3 vp; 24 | 25 | private Vector3 nv; 26 | 27 | private Vector3 a; 28 | private Vector3 b; 29 | private Vector3 c; 30 | 31 | private float d_ab; 32 | private float d_bc; 33 | 34 | private void Update() 35 | { 36 | if(Input.GetMouseButtonDown(0)) 37 | { 38 | var ray = Camera.main.ScreenPointToRay(Input.mousePosition); 39 | RaycastHit hitInfo; 40 | if(Physics.Raycast(ray, out hitInfo)) 41 | { 42 | meshFilter = hitInfo.transform.GetComponent(); 43 | mesh = meshFilter.sharedMesh; 44 | var meshTriangles = mesh.triangles; 45 | var meshVertices = mesh.vertices; 46 | var meshUv = mesh.uv; 47 | 48 | for(var i = 0; i < meshTriangles.Length; i += 3) 49 | { 50 | #region 1.ある点pが与えられた3点において平面上に存在するか 51 | 52 | index0 = i + 0; 53 | index1 = i + 1; 54 | index2 = i + 2; 55 | 56 | p1 = meshVertices[meshTriangles[index0]]; 57 | p2 = meshVertices[meshTriangles[index1]]; 58 | p3 = meshVertices[meshTriangles[index2]]; 59 | p = hitInfo.transform.InverseTransformPoint(hitInfo.point); 60 | 61 | v1 = p2 - p1; 62 | v2 = p3 - p1; 63 | vp = p - p1; 64 | 65 | nv = Vector3.Cross(v1, v2); 66 | var val = Vector3.Dot(nv, vp); 67 | //適当に小さい少数値で誤差をカバー 68 | if(!(-0.000001f < val && val < 0.000001f)) 69 | continue; 70 | 71 | #endregion 1.ある点pが与えられた3点において平面上に存在するか 72 | 73 | #region 2.同一平面上に存在する点pが三角形内部に存在するか 74 | 75 | a = Vector3.Cross(p1 - p3, p - p1).normalized; 76 | b = Vector3.Cross(p2 - p1, p - p2).normalized; 77 | c = Vector3.Cross(p3 - p2, p - p3).normalized; 78 | 79 | d_ab = Vector3.Dot(a, b); 80 | d_bc = Vector3.Dot(b, c); 81 | 82 | if(!(0.999f < d_ab && 0.999f < d_bc)) 83 | continue; 84 | 85 | #endregion 2.同一平面上に存在する点pが三角形内部に存在するか 86 | 87 | #region 3.点pのUV座標を求める 88 | 89 | var uv1 = meshUv[meshTriangles[index0]]; 90 | var uv2 = meshUv[meshTriangles[index1]]; 91 | var uv3 = meshUv[meshTriangles[index2]]; 92 | 93 | //PerspectiveCollect(透視投影を考慮したUV補間) 94 | Matrix4x4 mvp = Camera.main.projectionMatrix * Camera.main.worldToCameraMatrix * hitInfo.transform.localToWorldMatrix; 95 | //各点をProjectionSpaceへの変換 96 | Vector4 p1_p = mvp * p1; 97 | Vector4 p2_p = mvp * p2; 98 | Vector4 p3_p = mvp * p3; 99 | Vector4 p_p = mvp * p; 100 | //通常座標への変換(ProjectionSpace) 101 | Vector2 p1_n = new Vector2(p1_p.x, p1_p.y) / p1_p.w; 102 | Vector2 p2_n = new Vector2(p2_p.x, p2_p.y) / p2_p.w; 103 | Vector2 p3_n = new Vector2(p3_p.x, p3_p.y) / p3_p.w; 104 | Vector2 p_n = new Vector2(p_p.x, p_p.y) / p_p.w; 105 | //頂点のなす三角形を点pにより3分割し、必要になる面積を計算 106 | var s = 0.5f * ((p2_n.x - p1_n.x) * (p3_n.y - p1_n.y) - (p2_n.y - p1_n.y) * (p3_n.x - p1_n.x)); 107 | var s1 = 0.5f * ((p3_n.x - p_n.x) * (p1_n.y - p_n.y) - (p3_n.y - p_n.y) * (p1_n.x - p_n.x)); 108 | var s2 = 0.5f * ((p1_n.x - p_n.x) * (p2_n.y - p_n.y) - (p1_n.y - p_n.y) * (p2_n.x - p_n.x)); 109 | //面積比からuvを補間 110 | var u = s1 / s; 111 | var v = s2 / s; 112 | var w = 1 / ((1 - u - v) * 1 / p1_p.w + u * 1 / p2_p.w + v * 1 / p3_p.w); 113 | var uv = w * ((1 - u - v) * uv1 / p1_p.w + u * uv2 / p2_p.w + v * uv3 / p3_p.w); 114 | 115 | //uvが求まったよ!!!! 116 | Debug.Log(uv + ":" + hitInfo.textureCoord); 117 | return; 118 | 119 | #endregion 3.点pのUV座標を求める 120 | } 121 | } 122 | } 123 | } 124 | } -------------------------------------------------------------------------------- /Assets/003.CulcUV/CulcUV.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a33099b0513a3242afcc4ebc039d643 3 | timeCreated: 1462549306 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/003.CulcUV/CulcUV.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/003.CulcUV/CulcUV.unity -------------------------------------------------------------------------------- /Assets/003.CulcUV/CulcUV.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef2ee132b7a60c34b8cd8d0328573b9c 3 | timeCreated: 1462549249 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/003.CulcUV/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2fc9246e2af36a14685ba96fe76ccd2a 3 | folderAsset: yes 4 | timeCreated: 1474530361 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/003.CulcUV/Materials/No Name.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/003.CulcUV/Materials/No Name.mat -------------------------------------------------------------------------------- /Assets/003.CulcUV/Materials/No Name.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96a11dcdf3490494681c6d5ab771e3cb 3 | timeCreated: 1474530361 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/003.CulcUV/untitled.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/003.CulcUV/untitled.fbx -------------------------------------------------------------------------------- /Assets/003.CulcUV/untitled.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d52c0e4169d8a1b41a7ae130a3717ce9 3 | timeCreated: 1474531511 4 | licenseType: Pro 5 | ModelImporter: 6 | serializedVersion: 19 7 | fileIDToRecycleName: 8 | 100000: //RootNode 9 | 400000: //RootNode 10 | 2300000: //RootNode 11 | 3300000: //RootNode 12 | 4300000: "\u30E2\u30F3\u30AD\u30FC" 13 | materials: 14 | importMaterials: 1 15 | materialName: 0 16 | materialSearch: 1 17 | animations: 18 | legacyGenerateAnimations: 4 19 | bakeSimulation: 0 20 | resampleCurves: 1 21 | optimizeGameObjects: 0 22 | motionNodeName: 23 | animationImportErrors: 24 | animationImportWarnings: 25 | animationRetargetingWarnings: 26 | animationDoRetargetingWarnings: 0 27 | animationCompression: 1 28 | animationRotationError: 0.5 29 | animationPositionError: 0.5 30 | animationScaleError: 0.5 31 | animationWrapMode: 0 32 | extraExposedTransformPaths: [] 33 | clipAnimations: [] 34 | isReadable: 1 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 100 38 | meshCompression: 0 39 | addColliders: 0 40 | importBlendShapes: 1 41 | swapUVChannels: 0 42 | generateSecondaryUV: 0 43 | useFileUnits: 1 44 | optimizeMeshForGPU: 1 45 | keepQuads: 0 46 | weldVertices: 1 47 | secondaryUVAngleDistortion: 8 48 | secondaryUVAreaDistortion: 15.000001 49 | secondaryUVHardAngle: 88 50 | secondaryUVPackMargin: 4 51 | useFileScale: 1 52 | tangentSpace: 53 | normalSmoothAngle: 60 54 | normalImportMode: 0 55 | tangentImportMode: 3 56 | importAnimation: 1 57 | copyAvatar: 0 58 | humanDescription: 59 | human: [] 60 | skeleton: [] 61 | armTwist: 0.5 62 | foreArmTwist: 0.5 63 | upperLegTwist: 0.5 64 | legTwist: 0.5 65 | armStretch: 0.05 66 | legStretch: 0.05 67 | feetSpacing: 0 68 | rootMotionBoneName: 69 | hasTranslationDoF: 0 70 | lastHumanDescriptionAvatarSource: {instanceID: 0} 71 | animationType: 0 72 | humanoidOversampling: 1 73 | additionalBone: 0 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/004.UVChecker.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8c184162226630b45938e1315f2e0dc8 3 | folderAsset: yes 4 | timeCreated: 1476304044 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/004.UVChecker/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c82d0091f85b634faa2c7b95f1ee459 3 | folderAsset: yes 4 | timeCreated: 1475220085 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/004.UVChecker/Materials/Material.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/004.UVChecker/Materials/Material.mat -------------------------------------------------------------------------------- /Assets/004.UVChecker/Materials/Material.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fcbfdad39de11be49b7f91d457263dcf 3 | timeCreated: 1475220085 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/004.UVChecker/Sample.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/004.UVChecker/Sample.unity -------------------------------------------------------------------------------- /Assets/004.UVChecker/Sample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2daddc144bee3045ac5ca5c94a33e42 3 | timeCreated: 1475215815 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/004.UVChecker/UVChecker.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Text; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | public class UVChecker : EditorWindow 7 | { 8 | private GameObject targetGameObject; 9 | private MeshFilter targetMeshFilter; 10 | private Texture2D tex; 11 | 12 | [MenuItem("Window/UVChecker")] 13 | private static void Open() 14 | { 15 | GetWindow(); 16 | } 17 | 18 | private void OnGUI() 19 | { 20 | targetGameObject = EditorGUILayout.ObjectField("TargetMesh", targetGameObject, typeof(GameObject), true) as GameObject; 21 | if(GUILayout.Button("Execute")) 22 | { 23 | targetMeshFilter = targetGameObject.GetComponent(); 24 | tex = new Texture2D(256, 256); 25 | var mesh = targetMeshFilter.sharedMesh; 26 | DrawUV(mesh); 27 | } 28 | if(tex != null) 29 | { 30 | EditorGUI.DrawPreviewTexture(new Rect(10, 50, tex.width, tex.height), tex); 31 | } 32 | } 33 | 34 | private void DrawUV(Mesh mesh) 35 | { 36 | var uvs = mesh.uv; 37 | var tri = mesh.triangles; 38 | 39 | for(int i_base = 0; i_base < tri.Length; i_base += 3) 40 | { 41 | int i_1 = i_base; 42 | int i_2 = i_base + 1; 43 | int i_3 = i_base + 2; 44 | 45 | Vector2 uv1 = uvs[tri[i_1]]; 46 | Vector2 uv2 = uvs[tri[i_2]]; 47 | Vector2 uv3 = uvs[tri[i_3]]; 48 | 49 | DrawLine(uv1, uv2); 50 | DrawLine(uv2, uv3); 51 | DrawLine(uv3, uv1); 52 | } 53 | 54 | tex.Apply(false); 55 | 56 | UVLog(uvs); 57 | } 58 | 59 | private void UVLog(Vector2[] uvs) 60 | { 61 | StringBuilder sb = new StringBuilder(); 62 | foreach(var uv in uvs) 63 | { 64 | sb.AppendLine(uv.ToString()); 65 | } 66 | 67 | Debug.Log(sb.ToString()); 68 | } 69 | 70 | private void DrawLine(Vector2 from, Vector2 to) 71 | { 72 | int x0 = Mathf.RoundToInt(from.x * tex.width); 73 | int y0 = Mathf.RoundToInt(from.y * tex.height); 74 | int x1 = Mathf.RoundToInt(to.x * tex.width); 75 | int y1 = Mathf.RoundToInt(to.y * tex.height); 76 | 77 | DrawLine(x0, y0, x1, y1, Color.red); 78 | } 79 | 80 | private void DrawLine(int x0, int y0, int x1, int y1, Color col) 81 | { 82 | int dy = y1 - y0; 83 | int dx = x1 - x0; 84 | int stepx, stepy; 85 | 86 | if(dy < 0) 87 | { dy = -dy; stepy = -1; } 88 | else 89 | { stepy = 1; } 90 | if(dx < 0) 91 | { dx = -dx; stepx = -1; } 92 | else 93 | { stepx = 1; } 94 | dy <<= 1; 95 | dx <<= 1; 96 | 97 | float fraction = 0; 98 | 99 | tex.SetPixel(x0, y0, col); 100 | if(dx > dy) 101 | { 102 | fraction = dy - (dx >> 1); 103 | while(Mathf.Abs(x0 - x1) > 1) 104 | { 105 | if(fraction >= 0) 106 | { 107 | y0 += stepy; 108 | fraction -= dx; 109 | } 110 | x0 += stepx; 111 | fraction += dy; 112 | tex.SetPixel(x0, y0, col); 113 | } 114 | } 115 | else 116 | { 117 | fraction = dx - (dy >> 1); 118 | while(Mathf.Abs(y0 - y1) > 1) 119 | { 120 | if(fraction >= 0) 121 | { 122 | x0 += stepx; 123 | fraction -= dy; 124 | } 125 | y0 += stepy; 126 | fraction += dx; 127 | tex.SetPixel(x0, y0, col); 128 | } 129 | } 130 | } 131 | } -------------------------------------------------------------------------------- /Assets/004.UVChecker/UVChecker.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e736eb0dd1bbf064dbe41991c4036572 3 | timeCreated: 1475212215 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/005.VTF.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5c0d96c9156a679439123f4cb7f6457f 3 | folderAsset: yes 4 | timeCreated: 1476304044 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/005.VTF/DirectXMode.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/VertDisplace" { 2 | Properties{ 3 | _MainTex("Base (RGB)", 2D) = "white" {} 4 | } 5 | SubShader{ 6 | Tags{ "RenderType" = "Opaque" } 7 | LOD 200 8 | 9 | CGPROGRAM 10 | // Upgrade NOTE: excluded shader from OpenGL ES 2.0 because it does not contain a surface program or both vertex and fragment programs. 11 | #pragma exclude_renderers gles 12 | 13 | #pragma target 3.0 14 | #pragma vertex vert 15 | #pragma surface surf BlinnPhong 16 | 17 | sampler2D _MainTex; 18 | 19 | struct Input { 20 | float2 uv_MainTex; 21 | }; 22 | 23 | void vert(inout appdata_full v) { 24 | #if !defined(SHADER_API_OPENGL) 25 | float4 tex = tex2Dlod(_MainTex, float4(v.texcoord.xy,0,0)); 26 | v.vertex.y += tex.r * 2.0; 27 | #endif 28 | } 29 | 30 | void surf(Input IN, inout SurfaceOutput o) { 31 | half4 tex = tex2D(_MainTex, IN.uv_MainTex); 32 | o.Albedo = tex.rgb; 33 | o.Alpha = tex.a; 34 | } 35 | 36 | ENDCG 37 | } 38 | FallBack "Diffuse" 39 | } -------------------------------------------------------------------------------- /Assets/005.VTF/DirectXMode.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b1adbf047dbaa6c408f350e64aa7beb1 3 | timeCreated: 1474106181 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/005.VTF/OpenGLMode.shader: -------------------------------------------------------------------------------- 1 | Shader "Custom/VertDisplace" { 2 | Properties{ 3 | _MainTex("Base (RGB)", 2D) = "white" {} 4 | } 5 | SubShader{ 6 | Tags{ "RenderType" = "Opaque" } 7 | LOD 200 8 | 9 | CGPROGRAM 10 | // Upgrade NOTE: excluded shader from OpenGL ES 2.0 because it does not contain a surface program or both vertex and fragment programs. 11 | #pragma exclude_renderers gles 12 | #pragma glsl 13 | #pragma target 3.0 14 | #pragma vertex vert 15 | #pragma surface surf BlinnPhong 16 | 17 | sampler2D _MainTex; 18 | 19 | struct Input { 20 | float2 uv_MainTex; 21 | }; 22 | 23 | void vert(inout appdata_full v) { 24 | float4 tex = tex2Dlod(_MainTex, float4(v.texcoord.xy,0,0)); 25 | v.vertex.y += tex.r * 2.0; 26 | } 27 | 28 | void surf(Input IN, inout SurfaceOutput o) { 29 | half4 tex = tex2D(_MainTex, IN.uv_MainTex); 30 | o.Albedo = tex.rgb; 31 | o.Alpha = tex.a; 32 | } 33 | 34 | ENDCG 35 | } 36 | FallBack "Diffuse" 37 | } -------------------------------------------------------------------------------- /Assets/005.VTF/OpenGLMode.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9cee61da1fc74d144b30317c44d1918b 3 | timeCreated: 1474106383 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/005.VTF/Vert Stuff.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/005.VTF/Vert Stuff.mat -------------------------------------------------------------------------------- /Assets/005.VTF/Vert Stuff.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4eab349c59339408fa977cae2671ccc3 3 | NativeFormatImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/005.VTF/Vert Stuff.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/005.VTF/Vert Stuff.psd -------------------------------------------------------------------------------- /Assets/005.VTF/Vert Stuff.psd.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bc12706a15524f349a8d6034a8c203f 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | serializedVersion: 2 6 | mipmaps: 7 | mipMapMode: 1 8 | enableMipMap: 1 9 | linearTexture: 0 10 | correctGamma: 0 11 | fadeOut: 0 12 | borderMipMap: 0 13 | mipMapFadeDistanceStart: 1 14 | mipMapFadeDistanceEnd: 3 15 | bumpmap: 16 | convertToNormalMap: 0 17 | externalNormalMap: 0 18 | heightScale: 0.25 19 | normalMapFilter: 0 20 | isReadable: 0 21 | grayScaleToAlpha: 1 22 | generateCubemap: 0 23 | cubemapConvolution: 0 24 | cubemapConvolutionSteps: 7 25 | cubemapConvolutionExponent: 1.5 26 | seamlessCubemap: 0 27 | textureFormat: -3 28 | maxTextureSize: 32 29 | textureSettings: 30 | filterMode: 1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: 0 34 | nPOTScale: 1 35 | lightmap: 0 36 | rGBM: 0 37 | compressionQuality: 50 38 | allowsAlphaSplitting: 0 39 | spriteMode: 0 40 | spriteExtrude: 1 41 | spriteMeshType: 1 42 | alignment: 0 43 | spritePivot: {x: 0.5, y: 0.5} 44 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 45 | spritePixelsToUnits: 100 46 | alphaIsTransparency: 0 47 | textureType: 0 48 | buildTargetSettings: [] 49 | spriteSheet: 50 | sprites: [] 51 | outline: [] 52 | spritePackingTag: 53 | userData: 54 | assetBundleName: 55 | assetBundleVariant: 56 | -------------------------------------------------------------------------------- /Assets/005.VTF/Vert Stuff.shader: -------------------------------------------------------------------------------- 1 | Shader "Vert Stuff" { 2 | 3 | Properties {_MainTex ("Texture (Aplha)", 2D) = ""} 4 | 5 | SubShader {Pass { 6 | GLSLPROGRAM 7 | varying vec4 color; 8 | 9 | #ifdef VERTEX 10 | uniform lowp sampler2D _MainTex; 11 | float tex(in float x, in float y) { 12 | return texture2D(_MainTex, gl_MultiTexCoord0.xy + vec2(x,y)).a; 13 | } 14 | vec3 spots(in float rx, in float ry, in float gx, in float gy, in float bx, in float by) { 15 | return vec3(tex(rx, ry), tex(gx, gy), tex(bx, by)); 16 | } 17 | void main() { 18 | gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; 19 | color.rgb = 20 | spots(0., 0., 0., .8, 0., .6) + 21 | spots(.5, 0., .5, .8, .5, .6) + 22 | spots(.75, .6, .75, .4, .75, .2) + 23 | spots(.25, .6, .25, .4, .25, .2); 24 | } 25 | #endif 26 | 27 | #ifdef FRAGMENT 28 | void main() {gl_FragColor = color;} 29 | #endif 30 | ENDGLSL 31 | }} 32 | 33 | } -------------------------------------------------------------------------------- /Assets/005.VTF/Vert Stuff.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c7e999b8df254f33940728b84adde31 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/005.VTF/Vert Stuff.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/005.VTF/Vert Stuff.unity -------------------------------------------------------------------------------- /Assets/005.VTF/Vert Stuff.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ba2d7af4f0b049dd956ee9a88fd311f 3 | DefaultImporter: 4 | userData: 5 | assetBundleName: 6 | assetBundleVariant: 7 | -------------------------------------------------------------------------------- /Assets/006.Tessellation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e733b72501be664297f1b52705ac447 3 | folderAsset: yes 4 | timeCreated: 1476304044 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/001_Simple.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a5b54ebb59ac4a74ebdf73055e43c405 3 | folderAsset: yes 4 | timeCreated: 1475588690 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/001_Simple/Sample.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/006.Tessellation/001_Simple/Sample.unity -------------------------------------------------------------------------------- /Assets/006.Tessellation/001_Simple/Sample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e3e0d6e72c795243ad97f99263da0c7 3 | timeCreated: 1475294400 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/001_Simple/SimpleTessellation.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/006.Tessellation/001_Simple/SimpleTessellation.mat -------------------------------------------------------------------------------- /Assets/006.Tessellation/001_Simple/SimpleTessellation.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60b879f69eb3ff44cbae8ef6b74b85ab 3 | timeCreated: 1475335679 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/001_Simple/SimpleTessellation.shader: -------------------------------------------------------------------------------- 1 | Shader "Unlit/SimpleTessellation" 2 | { 3 | Properties{ 4 | _TessFactor("Tess Factor",Vector) = (2,2,2,2) 5 | } 6 | 7 | SubShader{ 8 | Pass{ 9 | CGPROGRAM 10 | 11 | #pragma vertex VS 12 | #pragma fragment FS 13 | #pragma hull HS 14 | #pragma domain DS 15 | #define INPUT_PATCH_SIZE 3 16 | #define OUTPUT_PATCH_SIZE 3 17 | 18 | uniform vector _TessFactor; 19 | 20 | struct appdata { 21 | float4 w_vert:POSITION; 22 | }; 23 | struct v2h { 24 | float4 pos:POS; 25 | }; 26 | struct h2d_main { 27 | float3 pos:POS; 28 | }; 29 | struct h2d_const { 30 | float tess_factor[3] : SV_TessFactor; 31 | float InsideTessFactor : SV_InsideTessFactor; 32 | }; 33 | struct d2f { 34 | float4 pos:SV_Position; 35 | }; 36 | 37 | struct f_input { 38 | float4 vertex:SV_Position; 39 | float4 color:COLOR0; 40 | }; 41 | 42 | v2h VS(appdata i) { 43 | v2h o = (v2h)0; 44 | o.pos = i.w_vert; 45 | return o; 46 | } 47 | 48 | h2d_const HSConst(InputPatch i) { 49 | h2d_const o = (h2d_const)0; 50 | o.tess_factor[0] = _TessFactor.x; 51 | o.tess_factor[1] = _TessFactor.y; 52 | o.tess_factor[2] = _TessFactor.z; 53 | o.InsideTessFactor = _TessFactor.w; 54 | return o; 55 | } 56 | 57 | [domain("tri")] 58 | [partitioning("integer")] 59 | [outputtopology("triangle_cw")] 60 | [outputcontrolpoints(OUTPUT_PATCH_SIZE)] 61 | [patchconstantfunc("HSConst")] 62 | h2d_main HS(InputPatch i, uint id:SV_OutputControlPointID) { 63 | h2d_main o = (h2d_main)0; 64 | o.pos = i[id].pos; 65 | return o; 66 | } 67 | 68 | [domain("tri")] 69 | d2f DS(h2d_const hs_const_data, const OutputPatch i, float3 bary:SV_DomainLocation) { 70 | d2f o = (d2f)0; 71 | float3 pos = i[0].pos * bary.x + i[1].pos * bary.y + i[2].pos * bary.z; 72 | o.pos = mul(UNITY_MATRIX_MVP, float4(pos, 1)); 73 | return o; 74 | } 75 | 76 | float4 FS(f_input i) : SV_Target { 77 | return float4(1, 0, 0, 1); 78 | } 79 | 80 | ENDCG 81 | } 82 | } 83 | } -------------------------------------------------------------------------------- /Assets/006.Tessellation/001_Simple/SimpleTessellation.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6139671c30c61c44189dbba801d1bd10 3 | timeCreated: 1475294442 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/002_LOD.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a626eb8e0e60af34497f1419beda5583 3 | folderAsset: yes 4 | timeCreated: 1475591975 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/002_LOD/LODTessellation.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/006.Tessellation/002_LOD/LODTessellation.mat -------------------------------------------------------------------------------- /Assets/006.Tessellation/002_LOD/LODTessellation.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dc3191163dc268245968d92a866a4408 3 | timeCreated: 1475589027 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/002_LOD/LODTessellation.shader: -------------------------------------------------------------------------------- 1 | Shader "Unlit/LODTessellation" 2 | { 3 | Properties{ 4 | _TessFactor("Tess Factor",Vector) = (2,2,2,2) 5 | _LODFactor("LOD Factor",range(1,10)) = 1 6 | } 7 | 8 | SubShader{ 9 | Pass{ 10 | CGPROGRAM 11 | 12 | #pragma vertex VS 13 | #pragma fragment FS 14 | #pragma hull HS 15 | #pragma domain DS 16 | #define INPUT_PATCH_SIZE 3 17 | #define OUTPUT_PATCH_SIZE 3 18 | 19 | uniform vector _TessFactor; 20 | uniform float _LODFactor; 21 | 22 | struct appdata { 23 | float4 w_vert:POSITION; 24 | }; 25 | struct v2h { 26 | float4 pos:POS; 27 | }; 28 | struct h2d_main { 29 | float3 pos:POS; 30 | }; 31 | struct h2d_const { 32 | float tess_factor[3] : SV_TessFactor; 33 | float InsideTessFactor : SV_InsideTessFactor; 34 | }; 35 | struct d2f { 36 | float4 pos:SV_Position; 37 | }; 38 | 39 | struct f_input { 40 | float4 vertex:SV_Position; 41 | float4 color:COLOR0; 42 | }; 43 | 44 | v2h VS(appdata i) { 45 | v2h o = (v2h)0; 46 | o.pos = i.w_vert; 47 | return o; 48 | } 49 | 50 | h2d_const HSConst(InputPatch i) { 51 | h2d_const o = (h2d_const)0; 52 | //視点からの距離でLODを計算 53 | float lod = distance(float4(0, 0, 0, 0), mul(UNITY_MATRIX_MV, (i[0].pos + i[1].pos + i[2].pos) / 3)); 54 | o.tess_factor[0] = _TessFactor.x * _LODFactor / lod; 55 | o.tess_factor[1] = _TessFactor.y * _LODFactor / lod; 56 | o.tess_factor[2] = _TessFactor.z * _LODFactor / lod; 57 | o.InsideTessFactor = _TessFactor.w * _LODFactor / lod; 58 | return o; 59 | } 60 | 61 | [domain("tri")] 62 | [partitioning("integer")] 63 | [outputtopology("triangle_cw")] 64 | [outputcontrolpoints(OUTPUT_PATCH_SIZE)] 65 | [patchconstantfunc("HSConst")] 66 | h2d_main HS(InputPatch i, uint id:SV_OutputControlPointID) { 67 | h2d_main o = (h2d_main)0; 68 | o.pos = i[id].pos; 69 | return o; 70 | } 71 | 72 | [domain("tri")] 73 | d2f DS(h2d_const hs_const_data, const OutputPatch i, float3 bary:SV_DomainLocation) { 74 | d2f o = (d2f)0; 75 | float3 pos = i[0].pos * bary.x + i[1].pos * bary.y + i[2].pos * bary.z; 76 | o.pos = mul(UNITY_MATRIX_MVP, float4(pos, 1)); 77 | return o; 78 | } 79 | 80 | float4 FS(f_input i) : SV_Target { 81 | return float4(1, 0, 0, 1); 82 | } 83 | 84 | ENDCG 85 | } 86 | } 87 | } -------------------------------------------------------------------------------- /Assets/006.Tessellation/002_LOD/LODTessellation.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: adcecc192a2a067498dd698048095865 3 | timeCreated: 1475588705 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/002_LOD/Sample.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/006.Tessellation/002_LOD/Sample.unity -------------------------------------------------------------------------------- /Assets/006.Tessellation/002_LOD/Sample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00fae6e36daff904b91ee69126243b76 3 | timeCreated: 1475592992 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/003.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54a6a479aa37d4844abe35c0bfc21218 3 | folderAsset: yes 4 | timeCreated: 1475592967 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/003/BezierTessellation.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/006.Tessellation/003/BezierTessellation.mat -------------------------------------------------------------------------------- /Assets/006.Tessellation/003/BezierTessellation.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8156d96f98159864690e6f898ad3263c 3 | timeCreated: 1475335679 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/003/BezierTessellation.shader: -------------------------------------------------------------------------------- 1 | Shader "Unlit/Tessellation" 2 | { 3 | Properties{ 4 | _TessFactor("Tess Factor",Range(1,10)) = 2 5 | } 6 | 7 | SubShader{ 8 | Pass{ 9 | CGPROGRAM 10 | 11 | #pragma vertex VS 12 | #pragma fragment FS 13 | #pragma hull HS 14 | #pragma domain DS 15 | #define INPUT_PATCH_SIZE 3 16 | #define OUTPUT_PATCH_SIZE 3 17 | 18 | uniform float _TessFactor; 19 | 20 | struct appdata { 21 | float4 vert:POSITION; 22 | float3 normal:NORMAL; 23 | float2 uv:TEXCOORD0; 24 | }; 25 | struct v2h { 26 | float4 pos:POS; 27 | float3 normal:NORMAL; 28 | float2 uv:TEXCOORD0; 29 | }; 30 | struct h2d_main { 31 | float3 pos:POS; 32 | float3 normal:NORMAL; 33 | float2 uv:TEXCOORD0; 34 | }; 35 | struct h2d_const { 36 | float tess_factor[3] : SV_TessFactor; 37 | float InsideTessFactor : SV_InsideTessFactor; 38 | }; 39 | struct d2f { 40 | float4 pos:SV_Position; 41 | float3 normal:NORMAL; 42 | float2 uv:TEXCOORD0; 43 | }; 44 | 45 | struct f_input { 46 | float4 vertex:SV_Position; 47 | float3 normal:NORMAL; 48 | float4 color:COLOR0; 49 | float2 uv:TEXCOORD0; 50 | }; 51 | 52 | v2h VS(appdata i) { 53 | v2h o = (v2h)0; 54 | o.pos = i.vert; 55 | o.normal = i.normal; 56 | o.uv = i.uv; 57 | return o; 58 | } 59 | 60 | h2d_const HSConst(InputPatch i) { 61 | h2d_const o = (h2d_const)0; 62 | o.tess_factor[0] = _TessFactor; 63 | o.tess_factor[1] = _TessFactor; 64 | o.tess_factor[2] = _TessFactor; 65 | o.InsideTessFactor = _TessFactor; 66 | return o; 67 | } 68 | 69 | [domain("tri")] 70 | [partitioning("integer")] 71 | [outputtopology("triangle_cw")] 72 | [outputcontrolpoints(OUTPUT_PATCH_SIZE)] 73 | [patchconstantfunc("HSConst")] 74 | h2d_main HS(InputPatch i, uint id:SV_OutputControlPointID) { 75 | h2d_main o = (h2d_main)0; 76 | o.pos = i[id].pos; 77 | o.normal = i[id].normal; 78 | o.uv = i[id].uv; 79 | return o; 80 | } 81 | 82 | [domain("tri")] 83 | d2f DS(h2d_const hs_const_data, const OutputPatch i, float3 bary:SV_DomainLocation) { 84 | d2f o = (d2f)0; 85 | o.normal = i[0].normal * bary.x + i[1].normal * bary.y + i[2].normal * bary.z; 86 | float3 pos = i[0].pos * bary.x + i[1].pos * bary.y + i[2].pos * bary.z; 87 | o.pos = mul(UNITY_MATRIX_MVP, float4(pos, 1)); 88 | o.uv = i[0].uv * bary.x + i[1].uv * bary.y + i[2].uv * bary.z; 89 | return o; 90 | } 91 | 92 | float4 FS(f_input i) : SV_Target { 93 | return float4(i.normal.x, i.normal.y, i.normal.z, 1); 94 | } 95 | 96 | ENDCG 97 | } 98 | } 99 | } -------------------------------------------------------------------------------- /Assets/006.Tessellation/003/BezierTessellation.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca5a790346b5c3047856e647867ea379 3 | timeCreated: 1475294442 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/003/Sample.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/006.Tessellation/003/Sample.unity -------------------------------------------------------------------------------- /Assets/006.Tessellation/003/Sample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d72eadb5ee4bf542a62015954720ec6 3 | timeCreated: 1475593006 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/Model.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 78ee2cbaebe8eb841b6e4c1833e06d4e 3 | folderAsset: yes 4 | timeCreated: 1475592523 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/Model/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c9277ad6a8f00e4bbeb8321a653b760 3 | folderAsset: yes 4 | timeCreated: 1475592455 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/Model/Materials/No Name.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/006.Tessellation/Model/Materials/No Name.mat -------------------------------------------------------------------------------- /Assets/006.Tessellation/Model/Materials/No Name.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ab7a3a1db0fd39418b8073a355ed8c8 3 | timeCreated: 1475592455 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/006.Tessellation/Model/monky.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/006.Tessellation/Model/monky.fbx -------------------------------------------------------------------------------- /Assets/006.Tessellation/Model/monky.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1017c765c35389344b9db5741384da61 3 | timeCreated: 1475592455 4 | licenseType: Pro 5 | ModelImporter: 6 | serializedVersion: 19 7 | fileIDToRecycleName: 8 | 100000: //RootNode 9 | 400000: //RootNode 10 | 2300000: //RootNode 11 | 3300000: //RootNode 12 | 4300000: "\u30E2\u30F3\u30AD\u30FC" 13 | materials: 14 | importMaterials: 1 15 | materialName: 0 16 | materialSearch: 1 17 | animations: 18 | legacyGenerateAnimations: 4 19 | bakeSimulation: 0 20 | resampleCurves: 1 21 | optimizeGameObjects: 0 22 | motionNodeName: 23 | animationImportErrors: 24 | animationImportWarnings: 25 | animationRetargetingWarnings: 26 | animationDoRetargetingWarnings: 0 27 | animationCompression: 1 28 | animationRotationError: 0.5 29 | animationPositionError: 0.5 30 | animationScaleError: 0.5 31 | animationWrapMode: 0 32 | extraExposedTransformPaths: [] 33 | clipAnimations: [] 34 | isReadable: 1 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 1 38 | meshCompression: 0 39 | addColliders: 0 40 | importBlendShapes: 1 41 | swapUVChannels: 0 42 | generateSecondaryUV: 0 43 | useFileUnits: 1 44 | optimizeMeshForGPU: 1 45 | keepQuads: 0 46 | weldVertices: 1 47 | secondaryUVAngleDistortion: 8 48 | secondaryUVAreaDistortion: 15.000001 49 | secondaryUVHardAngle: 88 50 | secondaryUVPackMargin: 4 51 | useFileScale: 1 52 | tangentSpace: 53 | normalSmoothAngle: 60 54 | normalImportMode: 0 55 | tangentImportMode: 3 56 | importAnimation: 1 57 | copyAvatar: 0 58 | humanDescription: 59 | human: [] 60 | skeleton: [] 61 | armTwist: 0.5 62 | foreArmTwist: 0.5 63 | upperLegTwist: 0.5 64 | legTwist: 0.5 65 | armStretch: 0.05 66 | legStretch: 0.05 67 | feetSpacing: 0 68 | rootMotionBoneName: 69 | hasTranslationDoF: 0 70 | lastHumanDescriptionAvatarSource: {instanceID: 0} 71 | animationType: 0 72 | humanoidOversampling: 1 73 | additionalBone: 0 74 | userData: 75 | assetBundleName: 76 | assetBundleVariant: 77 | -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4e51e441e99aa0745b6809180015d437 3 | folderAsset: yes 4 | timeCreated: 1476304209 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/NearestPoint.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using UnityEngine; 5 | 6 | public class NearestPoint : MonoBehaviour 7 | { 8 | [SerializeField] 9 | private Transform pObj; 10 | 11 | [SerializeField] 12 | private Transform pdObj; 13 | 14 | private Mesh mesh; 15 | private int[] triangles; 16 | private Vector3[] vertices; 17 | 18 | private void Start() 19 | { 20 | mesh = GetComponent().sharedMesh; 21 | triangles = mesh.triangles; 22 | vertices = mesh.vertices; 23 | } 24 | 25 | private void Update() 26 | { 27 | var p = transform.worldToLocalMatrix.MultiplyPoint(pObj.position); 28 | 29 | //頂点の中で一番近いものを含む三角形を取得 30 | var tris = GetNearestVerticesTriangle(p, vertices, triangles); 31 | 32 | //それぞれの三角形空間でそれっぽいp'を計算 33 | var pds = new List(); 34 | for(int i = 0; i < tris.Length; i += 3) 35 | { 36 | var i0 = i; 37 | var i1 = i + 1; 38 | var i2 = i + 2; 39 | pds.Add(TriangleSpaceProjection(p, tris[i0], tris[i1], tris[i2])); 40 | } 41 | 42 | //p'が三角形内部にない場合は一番近い頂点位置をp'に設定(今はやらない) 43 | 44 | //pに一番近いp'が求めたかったオブジェクト表面 45 | var pd = pds.OrderBy(t => Vector3.Distance(p, t)).First(); 46 | 47 | pdObj.position = transform.localToWorldMatrix.MultiplyPoint(pd); 48 | } 49 | 50 | /// 51 | /// pに最も近い頂点を持つTriangleを返す 52 | /// 53 | private Vector3[] GetNearestVerticesTriangle(Vector3 p, Vector3[] vertices, int[] triangles) 54 | { 55 | List ret = new List(); 56 | 57 | int nearestIndex = triangles[0]; 58 | float nearestDistance = Vector3.Distance(vertices[nearestIndex], p); 59 | 60 | for(int i = 0; i < vertices.Length; ++i) 61 | { 62 | float distance = Vector3.Distance(vertices[i], p); 63 | if(distance < nearestDistance) 64 | { 65 | nearestDistance = distance; 66 | nearestIndex = i; 67 | } 68 | } 69 | //return nearestIndex; 70 | 71 | for(int i = 0; i < triangles.Length; ++i) 72 | { 73 | if(triangles[i] == nearestIndex) 74 | { 75 | var m = i % 3; 76 | int i0 = i, i1 = 0, i2 = 0; 77 | switch(m) 78 | { 79 | case 0: 80 | i1 = i + 1; 81 | i2 = i + 2; 82 | break; 83 | 84 | case 1: 85 | i1 = i - 1; 86 | i2 = i + 1; 87 | break; 88 | 89 | case 2: 90 | i1 = i - 1; 91 | i2 = i - 2; 92 | break; 93 | 94 | default: 95 | break; 96 | } 97 | ret.Add(vertices[triangles[i0]]); 98 | ret.Add(vertices[triangles[i1]]); 99 | ret.Add(vertices[triangles[i2]]); 100 | } 101 | } 102 | return ret.ToArray(); 103 | } 104 | 105 | /// 106 | /// 点pを三角形空間内に投影した点を返す 107 | /// 108 | /// 投影する点 109 | /// 三角形頂点 110 | /// 三角形頂点 111 | /// 三角形頂点 112 | /// 投影後の三角形空間上の点 113 | private Vector3 TriangleSpaceProjection(Vector3 p, Vector3 t1, Vector3 t2, Vector3 t3) 114 | { 115 | var g = (t1 + t2 + t3) / 3; 116 | var pa = t1 - p; 117 | var pb = t2 - p; 118 | var pc = t3 - p; 119 | var ga = t1 - g; 120 | var gb = t2 - g; 121 | var gc = t3 - g; 122 | 123 | var _pa_ = pa.magnitude; 124 | var _pb_ = pb.magnitude; 125 | var _pc_ = pc.magnitude; 126 | 127 | var lmin = Mathf.Min(Mathf.Min(_pa_, _pb_), _pc_); 128 | 129 | Func k = (t, u) => (t - lmin + u - lmin) / 2; 130 | 131 | var A = k(_pb_, _pc_); 132 | var B = k(_pc_, _pa_); 133 | var C = k(_pa_, _pb_); 134 | var pd = g + (ga * A + gb * B + gc * C); 135 | return pd; 136 | } 137 | } -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/NearestPoint.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dede03cf4d47d474ab9e7d74cfdc19e8 3 | timeCreated: 1476349476 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/New Material 1.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/007NearestSurfacePoint/New Material 1.mat -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/New Material 1.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9d637d887b9de34089d0af4e03d69f1 3 | timeCreated: 1476305175 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/New Material 2.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/007NearestSurfacePoint/New Material 2.mat -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/New Material 2.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fba29e2a1b7d694499c33c84af748635 3 | timeCreated: 1476305201 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/New Material.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/007NearestSurfacePoint/New Material.mat -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/New Material.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6327bc3ba0020ed43a8828e10a84b4a1 3 | timeCreated: 1476304986 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/Sample.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/Assets/007NearestSurfacePoint/Sample.unity -------------------------------------------------------------------------------- /Assets/007NearestSurfacePoint/Sample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7921aa4996655294fbef1ec0e48b8322 3 | timeCreated: 1476312607 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/AudioManager.asset -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/ClusterInputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/DynamicsManager.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/EditorBuildSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/EditorSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/GraphicsSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/InputManager.asset -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/NavMeshAreas.asset -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/Physics2DSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/ProjectSettings.asset -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2018.1.0f2 2 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/QualitySettings.asset -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/TagManager.asset -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/TimeManager.asset -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EsProgram/UnityShading/560ed9dfd8339ef6da92ef1abfa721b95f005b3a/ProjectSettings/UnityConnectSettings.asset -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | * [UnityShader勉強会 資料](https://esprog.hatenablog.com/entry/2018/11/08/190841) 2 | * [シェーディングまとめ](http://esprog.hatenablog.com/entry/2016/04/12/210311) 3 | * [Unityでなるべくシェーディング処理を自作してみる](http://esprog.hatenablog.com/entry/2016/04/14/184423) 4 | * [クック・トランスの金属反射モデル](http://esprog.hatenablog.com/entry/2016/04/21/151242) 5 | * [ShaderLabまとめ](https://speakerdeck.com/esprogram/unityfalsesiedanituitezi-fen-narinimatometemita) 6 | --------------------------------------------------------------------------------