Skip to content

Instantly share code, notes, and snippets.

View sugi-cho's full-sized avatar
😪
zzz

Hironori Sugino sugi-cho

😪
zzz
View GitHub Profile
@sugi-cho
sugi-cho / ViewPortToPos.shader
Last active April 8, 2022 00:28
クリップ座標系から、ワールド座標へ変換するやつ。理解を深めた http://www.songho.ca/opengl/gl_projectionmatrix.html
Shader "Unlit/ViewPortToPos"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_VP ("viewport position", Vector) = (0.5,0.5,1,0)
}
SubShader
{
Tags { "RenderType"="Opaque" }
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class MultiRenderTexture : MonoBehaviour
{
public RenderTextureUtil util;
public Material updateMat;
public string[] propNames;
@sugi-cho
sugi-cho / imageEffects.shader
Created September 14, 2015 11:45
Unity5 Base Shaders
Shader "Hidden/NewImageEffectShader"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
CGINCLUDE
#include "UnityCG.cginc"
@sugi-cho
sugi-cho / v2fStandard-Deferred.shader
Last active August 25, 2019 18:32
Generateされた、standard shaderを要らないpassを削って使いやすくしたもの(deferred pass のみ)。 影をいじりたかったら、cast shadow のpassを追加する必要あり。vertexいじらなかったら、影は不自然じゃなく落とせる。
Shader "Custom/Generated-SurfDeferred" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
CGINCLUDE
#include "HLSLSupport.cginc"
void vert(inout appdata_full v){
half4 worldPos = mul(_Object2World, v.vertex);
half4 viewPos = mul(UNITY_MATRIX_V, worldPos);
half4 eyePos = mul(UNITY_MATRIX_P, viewPos);
viewPos = mul(unity_CameraInvProjection, eyePos);
half4 localPos = mul(viewPos, UNITY_MATRIX_IT_MV);
v.vertex = localPos;
}

#UNITY_MATRIX_IT_MVの使い方とか View空間座標から、Object空間座標に変換する。
float4 objectSpacePos = mul(viewSpacePos, UNITY_MATRIX_IT_MV);

Projection空間座標から、View空間座標に変換 これは違った!!
float4 viewSpacePos = mul(eyeSpacePos, UNITY_MATRIX_P);

@sugi-cho
sugi-cho / Uneune.shader
Last active March 31, 2022 11:53
頂点をいじるシェーダーで、法線もいじる
Shader "Custom/Uneune" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
_BumpMap ("bump",2D) = "bump" {}
_VNF ("vert normal factor", Float) = 1.0
_MNF ("map normal factor", Float) = 1.0
}
using UnityEngine;
using UnityEngine.Networking;
public class MyNetManager:NetworkManager{
public override void OnStartClient(NetworkClient client){
base.OnStartClient(client);
//処理
}
public override void OnClientConnect(NetworkConnection conn){
//.....
var manager = GetComponent<NetworkManager>();
manager.StartServer(); //server
manager.StartClient(); //client
manager.StartHost(); //serverかつclient
manager.StopServer();
<iframe width="420" height="315" src="https://www.youtube.com/embed/--fKAwlUUAM" frameborder="0" allowfullscreen></iframe> ##ポイント - `using UnityEngine.Networking;` - ネットワークで同期させる変数、モノは、全てServer側で動かす - ClientからServer側の関数を呼ぶときは`[Command]`Attributeをつける。 - 同期させる変数には`[sync]`Attributeを付け、ServerからClientに同期される。`[sync]`の変数がClient側で変化した時に呼ばれる関数も指定できる。`[sync(hook="SomeFunc")]` - `if(NetworkServer.active)`Serverとして動作しているとき - `if(NetworkClient.active)`