[GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
[GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
Bonjour,
J'utilise une vidéo comme texture d'émission
...et je voudrais booster la puissance d'émission de cette texture...mais si je le fais la texture devient 'surexposée'!
Je sais que je pourrais augmenter le niveau de 'Indirect Intensity' dans l'onglet 'Lighting'...mais je ne veux (peux) pas toucher à ce réglage global mais juste être capable de régler ce problème au niveau local de l'objet!
Ma question est: comment pourrais-je booster la puissance d'émission sans "détruire" la texture elle même au passage?
Par ailleurs, même avec les réglages nominaux l'image est délavée!
N'y-a t'il donc pas moyen d'avoir l'image à son niveau original quand elle est utilisée comme map d'illumination?
Merci pour votre aide sur ces 2 questions!
Lien vers la scene test:
http://www3.zippyshare.com/v/h5mzrdV5/file.html
J'utilise une vidéo comme texture d'émission
...et je voudrais booster la puissance d'émission de cette texture...mais si je le fais la texture devient 'surexposée'!
Je sais que je pourrais augmenter le niveau de 'Indirect Intensity' dans l'onglet 'Lighting'...mais je ne veux (peux) pas toucher à ce réglage global mais juste être capable de régler ce problème au niveau local de l'objet!
Ma question est: comment pourrais-je booster la puissance d'émission sans "détruire" la texture elle même au passage?
Par ailleurs, même avec les réglages nominaux l'image est délavée!
N'y-a t'il donc pas moyen d'avoir l'image à son niveau original quand elle est utilisée comme map d'illumination?
Merci pour votre aide sur ces 2 questions!
Lien vers la scene test:
http://www3.zippyshare.com/v/h5mzrdV5/file.html
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
tu peux enlever l'image dans l'albedo, voire (là à tester) mettre la couleur d'albedo à noire.
L'image en émission devrait être la seule image puisque l'émission est additive.
L'image en émission devrait être la seule image puisque l'émission est additive.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
Merci pour ton conseil avisé! Je l'ai déjà fait, il y a certes une (très) légère différence..mais rien qui rende la luminosité originale à la texture!boubouk50 a écrit :tu peux enlever l'image dans l'albedo, voire (là à tester) mettre la couleur d'albedo à noire.
L'image en émission devrait être la seule image puisque l'émission est additive.
- Chapatataille
- Messages : 119
- Inscription : 28 Juin 2014 10:54
- Localisation : partout et nulle part!
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
je trouve aussi que unity à tendance à délaver les textures.
ce que je fais souvent, je mets l'albedo aussi dans secondary map detail albedo.
ça remet du peps à la texture
ce que je fais souvent, je mets l'albedo aussi dans secondary map detail albedo.
ça remet du peps à la texture
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
Elle est délavée parce que l'émission est à 1.5. Comme je l'ai dit, l'émission est additive donc elle ne reste pas entre 0 et 1.
Il faudrait que ton shader soit un shader Unlit pour ne pas se préoccuper de la lumière et avoir un autre émetteur invisible.
Il faudrait que ton shader soit un shader Unlit pour ne pas se préoccuper de la lumière et avoir un autre émetteur invisible.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
boubouk50,
OK, je suis ton raisonnement...mais n'ai aucune idée de comment 'cacher' un objet et qu'il soit toujours source d'émission dans l'illumination globale!! Peux-tu m'éclairer?
Merci pour ta réponse au passage!
PS: Il y a bien le "bricolage" de dédoubler l'object et de faire passer une copie devant, avec 'Cast Shadow' et 'Receive Shadow' sur OFF et de lui attribuer un Shader Unlit...mais bon!
OK, je suis ton raisonnement...mais n'ai aucune idée de comment 'cacher' un objet et qu'il soit toujours source d'émission dans l'illumination globale!! Peux-tu m'éclairer?
Merci pour ta réponse au passage!
PS: Il y a bien le "bricolage" de dédoubler l'object et de faire passer une copie devant, avec 'Cast Shadow' et 'Receive Shadow' sur OFF et de lui attribuer un Shader Unlit...mais bon!
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
L'emploi du subjonctif n'était pas anodin. N'ayant jamais eu à faire ce genre de travail, je ne peux que donner des idées.
Pour avoir ce que tu veux, mis à part la bidouille, je n'ai pas trop de solutions:
- Dupliquer le plan avec un matériau Unlit pour avoir ton image pile poil ce que tu veux en colorimétrie. Virer ses propriétés d'éclairage pour qu'il n’interagisse avec rien. (Comme tu l'as suggéré). Et ne pas non plus le faire entrer dans les calculs de lightmaps et autres.
- Pour l'émissif, tu pourrais utiliser ton shader en Cutout pour le faire disparaître. Il me semble qu'il restera émissif tout en étant invisible. Aussi, ton idée devrait marcher.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
Je ne me souviens plus, mais il n'y a pas des Projectors dans Unity? Des sortes lights planes émissifs?
- EDIT - Arf, je me souviens je crois, on utilisait des plans émissifs invisibles pour surexposer la lumière provenant de fenêtres dans les maquettes archi.
- EDIT - Cookie Light?
- EDIT - Arf, je me souviens je crois, on utilisait des plans émissifs invisibles pour surexposer la lumière provenant de fenêtres dans les maquettes archi.
- EDIT - Cookie Light?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
Merci à nouveau pour ta réponse boubouk50!
Les cookie light c'est plutôt un masque placé sur une source de lumière, pour projeter une ombre (celle du masque donc, pour simuler l'ombre d'objet n'existants pas dans la scène), non !??
Je pense que je vais être obligé de procéder par "bricolage" !
Les cookie light c'est plutôt un masque placé sur une source de lumière, pour projeter une ombre (celle du masque donc, pour simuler l'ombre d'objet n'existants pas dans la scène), non !??
Je pense que je vais être obligé de procéder par "bricolage" !
Re: [GI] Booster la puissance d'émission d'une texture sans délaver cette texture!
J'ai trouvé ce shader sur internet qui se sert de la "META pass"
Ci-joint le code, pour avoir une idée de ce qui se passe (pour moi, malheureusement, c'est du chinois)...et dans l'espoir que cela puisse être adapapté pour un shader non-ShaderForge
...mais c'est réalisé avec ShaderForge, que je n'ai pas!The Meta pass decouples the albedo and emissive, which Enlighten uses from regular Shader passes.
This allows you to control GI without affecting the Shader used for real-time rendering. The standard Shader contains a Meta pass by default.
Ci-joint le code, pour avoir une idée de ce qui se passe (pour moi, malheureusement, c'est du chinois)...et dans l'espoir que cela puisse être adapapté pour un shader non-ShaderForge
Code : Tout sélectionner
Shader "Shader Forge/NewShader" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Base Color", 2D) = "white" {}
_Power ("Power", Range(0, 10)) = 1
}
SubShader {
Tags {
"RenderType"="Opaque"
}
Pass {
Name "FORWARD"
Tags {
"LightMode"="ForwardBase"
}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#define UNITY_PASS_FORWARDBASE
#define _GLOSSYENV 1
#include "UnityCG.cginc"
#include "UnityPBSLighting.cginc"
#include "UnityStandardBRDF.cginc"
#pragma multi_compile_fwdbase_fullshadows
#pragma multi_compile_fog
#pragma only_renderers d3d9 d3d11 glcore gles
#pragma target 3.0
uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
uniform float _Power;
struct VertexInput {
float4 vertex : POSITION;
float3 normal : NORMAL;
float2 texcoord0 : TEXCOORD0;
};
struct VertexOutput {
float4 pos : SV_POSITION;
float2 uv0 : TEXCOORD0;
float4 posWorld : TEXCOORD1;
float3 normalDir : TEXCOORD2;
UNITY_FOG_COORDS(3)
};
VertexOutput vert (VertexInput v) {
VertexOutput o = (VertexOutput)0;
o.uv0 = v.texcoord0;
o.normalDir = UnityObjectToWorldNormal(v.normal);
o.posWorld = mul(unity_ObjectToWorld, v.vertex);
o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
UNITY_TRANSFER_FOG(o,o.pos);
return o;
}
float4 frag(VertexOutput i) : COLOR {
i.normalDir = normalize(i.normalDir);
float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
float3 normalDirection = i.normalDir;
float3 viewReflectDirection = reflect( -viewDirection, normalDirection );
////// Lighting:
////// Emissive:
float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
float3 emissive = ((_MainTex_var.rgb*_Color.rgb)*_Power);
float3 finalColor = emissive;
fixed4 finalRGBA = fixed4(finalColor,1);
UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
return finalRGBA;
}
ENDCG
}
Pass {
Name "Meta"
Tags {
"LightMode"="Meta"
}
Cull Off
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#define UNITY_PASS_META 1
#define _GLOSSYENV 1
#include "UnityCG.cginc"
#include "UnityPBSLighting.cginc"
#include "UnityStandardBRDF.cginc"
#include "UnityMetaPass.cginc"
#pragma fragmentoption ARB_precision_hint_fastest
#pragma multi_compile_shadowcaster
#pragma multi_compile_fog
#pragma only_renderers d3d9 d3d11 glcore gles
#pragma target 3.0
uniform float4 _Color;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
uniform float _Power;
struct VertexInput {
float4 vertex : POSITION;
float2 texcoord0 : TEXCOORD0;
float2 texcoord1 : TEXCOORD1;
float2 texcoord2 : TEXCOORD2;
};
struct VertexOutput {
float4 pos : SV_POSITION;
float2 uv0 : TEXCOORD0;
};
VertexOutput vert (VertexInput v) {
VertexOutput o = (VertexOutput)0;
o.uv0 = v.texcoord0;
o.pos = UnityMetaVertexPosition(v.vertex, v.texcoord1.xy, v.texcoord2.xy, unity_LightmapST, unity_DynamicLightmapST );
return o;
}
float4 frag(VertexOutput i) : SV_Target {
UnityMetaInput o;
UNITY_INITIALIZE_OUTPUT( UnityMetaInput, o );
float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
o.Emission = ((_MainTex_var.rgb*_Color.rgb)*_Power);
float3 diffColor = float3(0,0,0);
float specularMonochrome;
float3 specColor;
diffColor = DiffuseAndSpecularFromMetallic( diffColor, 0, specColor, specularMonochrome );
o.Albedo = diffColor;
return UnityMetaFragment( o );
}
ENDCG
}
}
FallBack "Diffuse"
CustomEditor "ShaderForgeMaterialInspector"
}